java.lang.exception.getCause()每次都为null

时间:2016-09-11 21:25:00

标签: java exception error-handling exception-handling null

在我开发的其中一个软件中,我正在尝试管理异常机制。

在程序的某个地方,我会做类似的事情;

IF(my condition not allowed){
    throw new Exception("My condition not allowed", null)
}

我使用java.lang.exception的参数抛出null,以了解这与编程错误无关。 (我没有机会创建自己的自定义异常,请考虑一下)

在编程之上的某处,我像这样抓住了我的异常;

}catch(Exception e){
if(null == e.getCause)
    do.somethingThatIWantToCatch();
}else{
    do.somethingProgramaticalError();
}

这里的问题是;我的代码可能抛出一些我不知道的其他东西,如NullPointerException,ArrayIndexOutOfBoundsException等...

此时我希望e.getCause()不应该为null,如果我得到编程错误,但是我总是得到NULL并执行我的do.somethingThatIWantToCatch();条件一直都在。

我该如何处理这种情况并执行我的do.somethingProgramaticalError();条件???

1 个答案:

答案 0 :(得分:0)

你应该永远抛出Exception(或其未经检查的孩子RuntimeException)的实例。你应该总是找到一个合适的子类来抛出,或者如果还没有合适的子类,你就创建自己的子类。

捕获Exception将捕获阳光下的每种类型的异常,包括您关注的NullPointerException以及您不喜欢的其他异常类型。最好尽可能具体地了解您捕获的异常类型,以便不处理您不想无意中处理的其他异常处理。

对于getCause(),这通常是传递给另一个异常的构造函数的异常。对于您遇到的绝大多数例外情况都是如此。