Jon*_*n C 6 java exception-handling
鉴于此堆栈跟踪:
java.lang.RuntimeException:
...
Caused by: com.mypackage.SpecificException
Run Code Online (Sandbox Code Playgroud)
这个尝试抓住:
try {
ts.init();
} catch (RuntimeException e) {
if (e.getCause() instanceof SpecificException) {
//do something
} else {
throw e;
}
}
Run Code Online (Sandbox Code Playgroud)
我无法修改代码,SpecificException也无法修改将此异常包装到的方法RuntimeException.
有没有更好的方法来捕捉SpecificException?
Java提供的唯一机制是选择要捕获的异常是特定的异常类.如果您想根据其原因区分同一类的异常,那么您需要捕获该类的所有异常,如您所示.
但是请注意,一旦捕获异常就重新抛出异常是有问题的,因为它会将原始堆栈跟踪替换为特定于新异常上下文的新异常throw.这可能会使调试变得更加困难.为避免这种情况,您需要将捕获的异常包装为单独的新异常的原因,然后抛出该异常.
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |