В документации Oracle по функции multi-catch, добавленной в Java 7, указано, что параметр исключения в предложении catch
неявно является final
.
У меня вопрос: в чем смысл такого ограничения? Потому что я не могу найти ни одного существенного улучшения, которое оно приносит. Пометка ссылочного объекта как final
только защищает саму ссылку от изменения, а не объект, на который она ссылается, и никогда не запрещается создавать другую ссылку и изменять ее так, как они захотят.
Несколько актуальный вопрос о SO обсуждает причины, по которым изменение ссылки на исключение в предложении catch
не является самым разумным решением, но оно касается любого использования предложения catch
, а не только его множественной формы. Так почему же Java делает исключение для multi-catch и обрабатывает его особым образом?