Javaでのプログラミングは、プログラマーがRuntimeExceptionsをキャッチすることを検討する必要があるときはいつでもありますか?コードでRuntimeExceptionsを捕捉するのはいつですか?
答えて
例外をキャッチするのと同じ理由で、RuntimeExceptionが発生します。何かを行う予定があります。おそらく例外を引き起こした原因を修正することができます。おそらく、異なる例外タイプで再スローする必要があるかもしれません。
例外をキャッチして無視することは、非常に悪いことです。
未確認の例外を使用して実際に行うべきかどうかはわかりません。基本的には、コード内にバグを表現するだけで、実行できるその他のことがないところに投げられるべきです。その場合、アプリケーションを捉える唯一の本当の理由は、アプリケーションが爆発するのを防ぐことです(これが可能であれば可能です)。 –
合意しました。コードを検証する他の方法がない場合は、例外をスローしてください! –
コードの検証が何を意味するのかよくわかりません。私が意味するのは、実行時の例外をスローする唯一の時間は、何もできないことがあるということでした。たとえば、BufferOverflow、BufferUnderflow、ClassCast、ConcurrentModificationsなどはすべて実行時の例外です。これらは、コードの検証とはまったく関係がありません。可能であれば回復するか、アプリケーションを死に至らせようとする以外は、実際には何もできません。あなたのアプリケーションが何をしているかによって異なります。 –
これは私が考えることができるものです。
- あなたは何かが間違っている場合には、エンドユーザーに素敵なメッセージを表示したい場合は、のRuntimeExceptionをキャッチし、それを記録します。次に、爆破のエラーではなく、画面に素晴らしいメッセージを表示します。
- 特定のアプリケーションに固有のRuntimeExceptionsをCheckedExceptionsをフレームワークをラップする.ITはhereが語ったとして、カスタム例外としてのRuntimeExceptionを使用することが好ましいです。
はい:可能な場合はいつでも回復できます。
多くの一般的な例外はRuntimeException
から継承されており、それぞれの状況によって回復可能である場合もありますし、回復できない場合もあります。 RuntimeException
クラスそのものは、例外がキャッチされる必要がある、またはキャッチされてはならないことを意味しません。
たとえば、特定の入力にIllegalArgumentException
をスローするライブラリメソッドがあるとします。プログラムに該当する場合は、この例外をキャッチして、何らかの方法でリカバリすることができます。たとえば、別の入力を試すか、操作を続行できない理由をユーザーに説明します。
ユーザーにカスタムメッセージを表示する場合は、RuntimeException
に移動します。
カスタムメッセージをラップしてスローします。
throw new RuntimeException("Invalid userName/Password !");
基本的には、アプリケーションを爆発させることができない場合があります。 This is a good articleはるかにこれを詳細に記述したが、ここでそれを合計引用です:
"If a client can reasonably be expected to recover from an exception, make it a
checked exception. If a client cannot do anything to recover from the exception,
make it an unchecked exception".
未チェックの例外は、基本的にはちょうどあなたのコードでは、実際によるバグが唯一のスローする必要がありますされているので、行うことができます何もありませんあなたがアプリケーションを捕まえたいと思う唯一のリアルタイムは、アプリケーションを爆破させることができないときです。
- 1. SaxParser.parseでレスポンスコードを捕捉する方法
- 2. アプリイベントをバックグラウンドで捕捉する
- 3. JUnitテストでAssertionErrorを捕捉するのは良い考えですか?
- 4. 巨大なJavaプロジェクト内でSystem.exit()コードを捕捉する方法は?
- 5. Facebookのキャンバスフレーム内でスクロールイベントを捕捉する方法は?
- 6. クラスヘルパーでクラスのイベントを捕捉する方法は?
- 7. Scalaのユーザー入力で空行を捕捉する方法は?
- 8. Xcodeで捕捉されない例外をデバッグする
- 9. 他のプロセスシグナルをLinuxで捕捉することは可能ですか?
- 10. Python:例外を捕捉する際にコードの重複を避けるには?
- 11. @catchブロックで捕捉されたオブジェクトのライフサイクルはどのくらいですか?
- 12. ManualResetEvent.WaitOne()でObjectDisposedExceptionを捕捉しても安全ですか?
- 13. InkCanvas、WPFで "Delete"キーボードイベントを捕捉するには?
- 14. PHPで外部イベントを捕捉するには?
- 15. StAX XML-parserで属性イベントを捕捉する方法は?
- 16. global.asaxでAJAX WebMethodエラーを捕捉するには?
- 17. 迷惑メールネットワークトラフィックの捕捉
- 18. UnknownHostExceptionが例外で捕捉されないのはなぜですか(java)?
- 19. javascriptでキーイベントを捕捉している関数を見つける?
- 20. 番号を非捕捉グループでRegexで解析する
- 21. 角度ジェスで未捕捉エラー:[$ injector:modulerr]
- 22. アプリケーションを停止するために捕捉するイベントはどれですか?
- 23. レールのアプリケーションコントローラでMysql :: Error例外を捕捉する方法2.3.8
- 24. 例外の捕捉順序は?
- 25. Pythonでimaplib例外を捕捉する(IMAPClientパッケージを使用)
- 26. レールでフェイルセーフ例外を捕捉する方法2.3.8
- 27. urllib.urlretrieveで404エラーを捕捉する方法
- 28. 2つ以上の連続した信号を捕捉するには?
- 29. BlackBerry Torch 9800 OS 6の回転スクリーンイベントを捕捉するには?
- 30. クライアントのサーバー障害を捕捉する方法は?
古いものですが... http://www.oracle.com/technetwork/articles/entarch/effective-exceptions-092345.html – user1329572