1

このようなものが必要だとします(このコードは大失敗ですが、単なる例です)。このコードは私の問題ではありません! ほんの一例です。if else ステートメントを使用して記述する方法を知っています。より複雑なコンテキストを検討しています!

int[] arraynums = new int[3] {1,2,3};
int Sample = 0;
try
{
Sample = arraynums[3];
}
catch
{
Sample=4;
}

ここでは、エラーが発生しない代替ロジックを使用できます。それでも、try catch ブロックを使用すれば、コードを減らすことができます。ロジックを解決するために try catch ブロックを使用することをお勧めしますか? いいえの場合、なぜですか?

4

4 に答える 4

6

次の理由から、例外を使用してビジネスロジック(またはフロー制御)を実装しないでください。

  • これは良い習慣ではありません。6か月後に混乱する場合でも、他の開発者を混乱させることになります(これは、PrincipleOfLeastAstonishmentに違反します。これにより、プログラマーが読みにくくなります)。
  • 例外はコストがかかります。
  • 悪いデザイン。

他の投稿で利用できる資料はかなりたくさんあります。

それについてのウィキ全体があります:http ://c2.com/cgi/wiki?DontUseExceptionsForFlowControl

于 2013-03-18T05:06:08.660 に答える
3

なぜ if ステートメントを使用しないのですか?

if(arraynums.length > 3)
{
    Sample = arraynums[3];
}
else
{
    Sample = 4;
}
于 2013-03-18T04:49:40.387 に答える
3

例外なくコードを書き直すのはかなり簡単なので、あなたのコードはかなり工夫されていると思います。例外は、実行時に比較的コストがかかります。悪用すると、コードが不必要に遅くなる可能性があります。一般に、スローを許可する前に、例外的な条件を確認する必要があります。

推奨読書:

于 2013-03-18T04:50:46.743 に答える
0

個人的には、エラーが発生した場合や、オブジェクトが実行時に使用できるかどうかわからない場合にのみ、try catch を使用します。

あなたのコードでは、Sample = 4 をデフォルトとして設定し、arraynums[3] に設定する前にチェックを行ったほうがよい場合があります。

于 2013-03-18T04:50:00.473 に答える