2011-08-05 12 views
4

実行時に決定されるカスタム例外をスローしたいと思います。現在、私は関数にスローを追加するか、try catchでそれを囲む必要があります。私が望むのは、この例外がまったく捕まえられないことです。これは致命的な例外で、プログラマーにエラーとその解決方法を示します。これは、初期化が最初に実行されたかどうかをチェックする抽象クラス用です。プログラムがクラッシュすると、NullPointerExceptionのように動作します。Javaで捕捉する必要がない例外をどのように持つか?

おかげ

+0

['NullPOinterExpception'](http://download.oracle.com/javase/6/docs/api/java/lang/NullPointerException.html)は本当に' java.lang.RuntimeException'を拡張していますそれ。 – Nishant

+1

これを行うには、おそらく標準例外を使用するべきです。 IllegalStateExceptionは、メソッドが呼び出されたときにそれが依存する他のメソッドがまだ呼び出されていないときに使用するものです。 –

答えて

13

サブクラスRuntimeException代わりの例外。

私は明らかにこれの背後にあるデザインの決定を知らないが、あなたがしようとしていることを達成するためのよりよい方法があるように思われる。

3

カスタム例外をRuntimeExceptionのサブクラスにします。これらはtry/catchで捕捉されるかもしれませんが、これはコンパイラによって強制されません。

+0

私は@ collin-hockeyに同意しますが、これは最良の方法ではないかもしれませんが、可能です。このアプローチは、コールスタックの深いところから例外をスローし、その間に 'throws'節をすべて記述することなく、より高いレベルで例外をスローするために使用されることがあります。 –

2

あなたのプログラムは決してクラッシュしないでください。

問題をデバッグするのに役立つバックトレースと関連情報を記録し、何かが間違っていて、詳細がログに記録されていることを知らせるのが理想的です。

+0

理想的な行動の説明は基本的にはクラッシュです。 –

+0

@ダニエル:はい、私が伝えたいのは、ターミナルにバックトレースをダンプするのが好ましいということです。うまく伝えて終了する。 IMO :) – Sujoy

0

RuntimeExceptionクラスを拡張する未チェックの例外または例外が必要です。デフォルトでは、チェックされていないすべての例外は、最終的に例外のスタックトレースを出力するdefault uncaught exception handlerによって捕捉されます。デフォルトのキャッチされていない例外ハンドラを別のものに変更しない限り、チェックされていない例外をスローしたときに観察される動作は、NullPointerException(別の未チェックの例外)がスローされたときに遭遇する動作と同じです。

スタックトレースを印刷しないで呼び出し元によってチェックされていない例外がキャッチされた場合、例外スタックトレースは表示されません。チェックされずにチェックされる方法(RuntimeExceptionの代わりにExceptionを拡張するもの)の例外がキャッチされる方法に違いはありません。コンパイラがチェック例外と未チェック例外を処理する点のみが異なります。

0

基本例外(Boobake4DomainExceptionなど)をRuntimeExceptionに拡張して作成し、すべての実行時例外に対してを拡張する必要があります。

それでは、それがあなた自身のものであるかどうかを確認するために、ちょうど} catch (Boobake4DomainException e) {を上流にすることができます。これにより、問題処理コードをはるかに簡単にすることができます。

関連する問題