2012-07-16 11 views

答えて

8

例外をキャッチするのと同じ理由で、RuntimeExceptionが発生します。何かを行う予定があります。おそらく例外を引き起こした原因を修正することができます。おそらく、異なる例外タイプで再スローする必要があるかもしれません。

例外をキャッチして無視することは、非常に悪いことです。

+1

未確認の例外を使用して実際に行うべきかどうかはわかりません。基本的には、コード内にバグを表現するだけで、実行できるその他のことがないところに投げられるべきです。その場合、アプリケーションを捉える唯一の本当の理由は、アプリケーションが爆発するのを防ぐことです(これが可能であれば可能です)。 –

+0

合意しました。コードを検証する他の方法がない場合は、例外をスローしてください! –

+0

コードの検証が何を意味するのかよくわかりません。私が意味するのは、実行時の例外をスローする唯一の時間は、何もできないことがあるということでした。たとえば、BufferOverflow、BufferUnderflow、ClassCast、ConcurrentModificationsなどはすべて実行時の例外です。これらは、コードの検証とはまったく関係がありません。可能であれば回復するか、アプリケーションを死に至らせようとする以外は、実際には何もできません。あなたのアプリケーションが何をしているかによって異なります。 –

2

これは私が考えることができるものです。

  1. あなたは何かが間違っている場合には、エンドユーザーに素敵なメッセージを表示したい場合は、のRuntimeExceptionをキャッチし、それを記録します。次に、爆破のエラーではなく、画面に素晴らしいメッセージを表示します。
  2. 特定のアプリケーションに固有のRuntimeExceptionsCheckedExceptionsをフレームワークをラップする.ITはhereが語ったとして、カスタム例外としてのRuntimeExceptionを使用することが好ましいです。
-1

はい:可能な場合はいつでも回復できます。

多くの一般的な例外はRuntimeExceptionから継承されており、それぞれの状況によって回復可能である場合もありますし、回復できない場合もあります。 RuntimeExceptionクラスそのものは、例外がキャッチされる必要がある、またはキャッチされてはならないことを意味しません。

たとえば、特定の入力にIllegalArgumentExceptionをスローするライブラリメソッドがあるとします。プログラムに該当する場合は、この例外をキャッチして、何らかの方法でリカバリすることができます。たとえば、別の入力を試すか、操作を続行できない理由をユーザーに説明します。

0

ユーザーにカスタムメッセージを表示する場合は、RuntimeExceptionに移動します。

カスタムメッセージをラップしてスローします。

throw new RuntimeException("Invalid userName/Password !"); 
0

基本的には、アプリケーションを爆発させることができない場合があります。 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". 

未チェックの例外は、基本的にはちょうどあなたのコードでは、実際によるバグが唯一のスローする必要がありますされているので、行うことができます何もありませんあなたがアプリケーションを捕まえたいと思う唯一のリアルタイムは、アプリケーションを爆破させることができないときです。

関連する問題