スタックトレース/例外に情報を追加したいと思います。基本的に私は私が本当に好きになりましたが、このようなものを、持っている例外への情報の追加
:私はまだ元のスタックを持ちながら、その例外をキャッチし、それに追加の情報を追加したいのですが
Exception in thread "main" java.lang.ArithmeticException:/by zero
at com.so.main(SO.java:41)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
トレース。例えば
、私はそれを持ってしたいと思います:
Exception in thread "main" CustomException:/by zero (you tried to divide 42 by 0)
at com.so.main(SO.java:41)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
だから、基本的に、私はを「あなたは0で42を分割しようとした」を追加(CustomException、たとえば、はArithmeticExceptionおよび再スローをキャッチしたいですこの例では、元のArithmeticExceptionからスタックトレースを保持したままです)。
Javaでこれを行う正しい方法は何ですか?
には、以下の正しいです:
try {
....
} catch (ArithmeticException e) {
throw new CustomException("You tried to divide " + x + " by " + y, e);
}
あなたが例外を投げた人ではない場合、どのように例外の詳細を知ることができますか? – Falmarri
@Falmarri:具体性はわかりませんが、メソッドパラメータのような追加の情報を追加できます。私は私の質問の最後に例を追加しました。 – NoozNooz42
通常、この情報はデバッグにのみ役立ちます。デバッガを使用してプログラムをデバッグし、例外にブレークポイントを配置することもできます。例外がスローされると、それを引き起こした条件が表示されます。 –