我有几个类似的方法,并且调用如下:
methodThrowingException() throws NullPointerException, InterruptedException, TimeoutException {
<method logic>
}
致电课程:
try{
methodThrowingExceptions();
<some other logic>
}
catch (NullPointerException npx) {
npx.printStackTrace();
log more details...
}
catch (InterruptedException inx) {
inx.printStackTrace();
log more details...
}
catch (TimeoutException tox) {
tox.printStackTrace();
log more details..
}
答案 0 :(得分:1)
从Java 7开始,您可以使用多捕获块:
catch (NullPointerException | InterruptedException | TimeoutException e) {
e.printStackTrace();
log more details...
}
那就是说,你永远不应该捕获NullPointerException:这是一个bug,如果它发生了,那么异常应该冒出来。你无法合理地期待 NPE发生。
此外,对于InterruptedException和其他异常做同样的事情也是非常可疑的。捕获InterruptedException时,应该重置当前线程上的中断标志,并尽快停止正在进行的操作。