Java 使用Apache ExceptionUtils.getRootCause处理异常是否正确?
我的代码中的以下条件是否可能为真?我相信不会,因为getRootCause会返回被丢弃的对象。所以它应该检查Throwable是否是MyOwnException的一个子类型,这是不正确的。所以,一般来说,使用getRootCause处理异常是错误的,不是吗 MyOwnException部分 Apache的ExceptionUtils.getRootCause instanceof将对照对象实例的实际运行时类型进行检查。保存对象的变量的声明编译时类型是什么并不重要 因此,您的条件是有效的:如果根本原因是MyOwnException,那么您的If块的主体将执行Java 使用Apache ExceptionUtils.getRootCause处理异常是否正确?,java,exception-handling,Java,Exception Handling,我的代码中的以下条件是否可能为真?我相信不会,因为getRootCause会返回被丢弃的对象。所以它应该检查Throwable是否是MyOwnException的一个子类型,这是不正确的。所以,一般来说,使用getRootCause处理异常是错误的,不是吗 MyOwnException部分 Apache的ExceptionUtils.getRootCause instanceof将对照对象实例的实际运行时类型进行检查。保存对象的变量的声明编译时类型是什么并不重要 因此,您的条件是有效的:如果根本
public class MyOwnException extends Exception {
// ....
}
public static Throwable getRootCause(Throwable throwable) {
List list = getThrowableList(throwable);
return (list.size() < 2 ? null : (Throwable)list.get(list.size() - 1));
}
try {
// do something
} catch (Exception e) {
try {
Throwable exc = ExceptionUtils.getRootCause(e);
if (exc instanceof MyOwnException) {
// do something
}
}
}