为catch参数赋值

时间:2014-09-24 20:07:10

标签: java

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

2 个答案:

答案 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
}