gpt4 book ai didi

java - 有没有更好的方法来捕获异常的特定原因?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:17:09 26 4
gpt4 key购买 nike

鉴于此堆栈跟踪:

 java.lang.RuntimeException:
...
Caused by: com.mypackage.SpecificException

还有这个 try-catch:

try {
ts.init();
} catch (RuntimeException e) {
if (e.getCause() instanceof SpecificException) {
//do something
} else {
throw e;
}
}

我无法修改 SpecificException 的代码,也无法修改将此异常包装到 RuntimeException 中的方法。

有没有更好的方法只捕获SpecificException

最佳答案

Java 提供的用于选择捕获哪些异常的唯一机制是特定异常的类。如果您想根据原因区分同一类的异常,那么您需要捕获该类的所有异常,正如您所演示的那样。

但是请注意,一旦捕获到异常就重新抛出它是有问题的,因为这会用特定于新 throw 上下文的新堆栈跟踪替换原始堆栈跟踪.这会使调试变得更加困难。为避免这种情况,您需要将捕获的异常包装为一个单独的新异常的原因,然后将其抛出。

关于java - 有没有更好的方法来捕获异常的特定原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29259250/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com