有很多关于java-7功能“精确重新渲染”和always @(A or B or G or P)
的问题,我找不到我的问题的明确答案。
“精确重新抛出”与final Exception ex
之间的关系是什么?
final Exception
如果我想使用“精确重新抛出”,则必须使用public static void main(String args[]) throws OpenException, CloseException {
boolean flag = true;
try {
if (flag){
throw new OpenException();
}
else {
throw new CloseException();
}
}
catch (final Exception e) {
System.out.println(e.getMessage());
throw e;
}
}
关键字吗?
final
如果不是强制性的,我可以将catch (final Exception e) {
System.out.println(e.getMessage());
throw e;
}
引用重新分配给新的例外吗?
ex
答案 0 :(得分:2)
不需要将e
中的异常参数(final
)声明为e
以获得精确的重新抛出语义。如果参数有效最终,您也可以获得精确的重新抛出。
在你的第二个例子中,参数不是最终的,所以你不能得到精确的重新抛出语义。
(如果您分配给try
的异常与minify: false
块中抛出的原始异常兼容,则甚至适用。
参考:JLS 11.2.2。