向异常添加信息
我想将信息添加到堆栈跟踪/异常。
基本上,到目前为止,我有这样的东西,我真的很喜欢:
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
因此,基本上我想捕获算术异常并重写,例如,自定义异常(在本例中添加“您尝试将42除以0”),同时仍保留原始算术异常的堆栈跟踪。
在Java中执行此操作的正确方法是什么?
以下是否正确:
try {
....
} catch (ArithmeticException e) {
throw new CustomException( "You tried to divide " + x + " by " + y, e );
}