2014-09-24 5 views
2

В документах для multiple try-catch есть инструкция.присвоить значения для параметра 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?

ответ

8

Если вы используете multi-catch, то вы не можете изменить ссылку Exception;

try { 
} catch (IOException|SQLException ex) { 
    ex = null; // <-- NOT LEGAL, the ex is final. 
} 
+1

LoL. Это было так очевидно. Мне очень тяжело. – lapots

2

Это означает, что вы не можете повторно назначить объект e к чему-то еще, потому что конечный объект может быть назначен только один раз.

try { 
} catch(SomeException | SomeDifferentException e) { 
    e = new FooException(); //Invalid 
    or 
    e = someOtherExcpetionObject; //Invalid 
}