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. BizTalkで捕捉された例外を送信するC#コード
- 2. SaxParser.parseでレスポンスコードを捕捉する方法
- 3. アプリイベントをバックグラウンドで捕捉する
- 4. AliasMatchで捕捉するApacheリライトURL
- 5. JUnitテストでAssertionErrorを捕捉するのは良い考えですか?
- 6. Alamofire 4でのヘッダー認証のベストプラクティス、グローバル401コードの捕捉
- 7. 巨大なJavaプロジェクト内でSystem.exit()コードを捕捉する方法は?
- 8. Pivot_SelectionChangedでAutoSuggestBoxのイベントを捕捉する方法は?
- 9. Scalaのユーザー入力で空行を捕捉する方法は?
- 10. クラスヘルパーでクラスのイベントを捕捉する方法は?
- 11. Facebookのキャンバスフレーム内でスクロールイベントを捕捉する方法は?
- 12. 他のプロセスシグナルをLinuxで捕捉することは可能ですか?
- 13. Xcodeで捕捉されない例外をデバッグする
- 14. Extjsイベントを捕捉する(コンボボックス)
- 15. 未捕捉ReferenceErrorを取得する
- 16. 捕捉基を有するRe.sub
- 17. NSControlのいくつかのイベントを迅速に捕捉する方法
- 18. @catchブロックで捕捉されたオブジェクトのライフサイクルはどのくらいですか?
- 19. ManualResetEvent.WaitOne()でObjectDisposedExceptionを捕捉しても安全ですか?
- 20. Python:例外を捕捉する際にコードの重複を避けるには?
- 21. global.asaxでAJAX WebMethodエラーを捕捉するには?
- 22. PHPで外部イベントを捕捉するには?
- 23. JDBCテンプレートでSqlInvalidAuthorizationSpecExceptionを捕捉する方法は?
- 24. PostgreSQL:関数内で例外を捕捉する方法は?
- 25. サイクル角2でイベントを捕捉する方法は?
- 26. 角度2でエラーを捕捉する方法は?
- 27. StAX XML-parserで属性イベントを捕捉する方法は?
- 28. InkCanvas、WPFで "Delete"キーボードイベントを捕捉するには?
- 29. swift 2.2でNSUnknownKeyExceptionを捕捉する方法は?
- 30. UnknownHostExceptionが例外で捕捉されないのはなぜですか(java)?
古いものですが... http://www.oracle.com/technetwork/articles/entarch/effective-exceptions-092345.html – user1329572