在multiple try-catch
的文档中有一个声明。
If a catch block handles more than one exception type, then the catch parameter is implicitly final. In this example, the catch parameter ex is final and therefore you cannot assign any values to it within the catch block
但我不明白。 cannot assign any values
是什么意思?就我记忆而言,我可以使用exception
对象的所有方法。他们在谈论什么assignment
?
答案 0 :(得分:8)
如果您使用multi-catch,则无法更改Exception
引用;
try {
} catch (IOException|SQLException ex) {
ex = null; // <-- NOT LEGAL, the ex is final.
}
答案 1 :(得分:2)
这意味着您无法将对象e
重新分配给其他对象,因为最终对象只能分配一次。
try {
} catch(SomeException | SomeDifferentException e) {
e = new FooException(); //Invalid
or
e = someOtherExcpetionObject; //Invalid
}