3

例外をスローして処理しないのは悪い習慣ですか? たとえば、Double.IsNaN() で true を返すはずのない数値がある場合、例外をスローしてプログラムをクラッシュさせても問題ないでしょうか? イベントが発生したときに操作を続行する適切な方法がない場合、例外を「処理」するポイントは正確には何ですか?

4

2 に答える 2

1

たとえユーザーに事態が悪化したことを知らせて exit を呼び出すだけだとしても、例外を処理しないのは好きではありません。デフォルトの未処理の例外よりも優れたエラー診断を試みることができることを除いて、とにかく例外を処理しないことでできることはほとんどありません。また、ユーザーがログ ファイルを添付してエラー メッセージを送信できるように、例外をログに記録する機会も与えられます。それ以外のクラッシュは、「状態が非常に壊れているので、どちらがもう終わっているのかわからない」という問題に対する許容できる解決策です。

于 2013-09-13T03:23:49.650 に答える
1

基本的な健全性チェックに違反する例外を追加しても害はありません。このような例外が発生するのは、実際にはそうではない何かが公理的であると誤って想定した場合、テスト中にのみ発生する必要があります。このような例外を必ずしも処理する必要はありません。

あなたが話しているのが、通常のプログラム操作中に発生する可能性のある破損状態であるが、アプリケーションの現在のレイヤーで対処する方法がない場合は、エラーから回復する別のレイヤーが必要なようです。ユーザー (またはコードとのインターフェイス) にアクセスし、適切なアクションを実行します。「適切なアクション」とは、エラーを記録して終了することから、ユーザーにさらに指示を求めることまで、何でもかまいません。この種の例外を未処理のままにしておくのは得策ではありません。

于 2013-09-13T01:31:44.810 に答える