使用Apache ExceptionUtils.getRootCause处理异常是否正确?

时间:2018-11-21 15:23:38

标签: java exception-handling

是否有可能满足“我的代码”中的以下条件(真)?我相信没有,因为2016-12-01T00:00:18.856+01:00 返回了强制转换为getRootCause的对象。因此,它应该检查Throwable是否是Throwable的子类型,这是不正确的。因此,通常来说,使用MyOwnException处理异常是错误的方法,不是吗?

MyOwnException部分

getRootCause

Apache的ExceptionUtils.getRootCause

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)); 
}

1 个答案:

答案 0 :(得分:1)

instanceof将检查对象实例的实际运行时类型。拥有对象的变量的已声明编译时类型是什么都没关系。

因此您的情况有效:如果根本原因是MyOwnException,那么您的if程序段的主体将执行。