7.Catch多个Exception,rethrow exception 改进了类型检测
很多时候,我们捕获了多个异常,却做了相同的事情,比如记日志,
包装成新的异常,然后rethrow。这时,代码就不那么优雅了,例如
Java代码 开始

catch (IOException ex) {
logger.log(ex);
throw ex;
catch (SQLException ex) {
logger.log(ex);
throw ex;
}
Java代码 结束

Jdk7允许捕获多个异常
Java代码 开始

catch (IOException|SQLException ex) {
logger.log(ex);
throw ex;
}
Java代码 结束

注意,catch后面的异常参数是final的,不能重新再复制
Rethrow
Exception更具包容性的类型检测
当你重新抛出多个异常时,不再需要详细定义异常类型了,
编译器已经知道你具体抛出的是哪个异常了。你只需在方法定义
的时候声明需要抛出的异常即可
Java代码 开始

public void call() throws ReflectiveOperationException, IOException {
try {
callWithReflection(arg);
} catch (final Exception e) {
logger.trace("Exception in reflection", e);
throw e;
}
}
Java代码 结束
