在自定义异常中组合多个异常:优化
Combining Multiple Exceptions in Custom Exception : Optimization
我有几个类似的方法,调用如下:
methodThrowingException() throws NullPointerException, InterruptedException, TimeoutException {
<method logic>
}
正在呼叫 class:
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..
}
- 我如何(如果)将所有这三个放在一个自定义异常中?
- 除了 (1) 之外,还有其他方法可以优化代码,这样我就不需要为多个方法编写完整的相同语句吗?
从 Java 7 开始,您可以使用 multi-catch 块:
catch (NullPointerException | InterruptedException | TimeoutException e) {
e.printStackTrace();
log more details...
}
就是说,你永远不应该捕获 NullPointerException:这是一个错误,如果它发生了,异常应该冒出来。您不能合理地期望 NPE 发生。
此外,对 InterruptedException 做与其他异常相同的事情也很可疑。当捕获到 InterruptedException 时,您应该重置当前线程上的中断标志,并尽快停止您正在做的事情。
我有几个类似的方法,调用如下:
methodThrowingException() throws NullPointerException, InterruptedException, TimeoutException {
<method logic>
}
正在呼叫 class:
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..
}
- 我如何(如果)将所有这三个放在一个自定义异常中?
- 除了 (1) 之外,还有其他方法可以优化代码,这样我就不需要为多个方法编写完整的相同语句吗?
从 Java 7 开始,您可以使用 multi-catch 块:
catch (NullPointerException | InterruptedException | TimeoutException e) {
e.printStackTrace();
log more details...
}
就是说,你永远不应该捕获 NullPointerException:这是一个错误,如果它发生了,异常应该冒出来。您不能合理地期望 NPE 发生。
此外,对 InterruptedException 做与其他异常相同的事情也很可疑。当捕获到 InterruptedException 时,您应该重置当前线程上的中断标志,并尽快停止您正在做的事情。