我正在检查Java SE7的新功能,目前我正在:
http://docs.oracle.com/javase/7/docs/technotes/guides/language/catch- multiple.html
关于捕获多个功能,当我遇到以下语句时:
注意:如果catch块处理多个异常类型,则catch参数隐式为final。在此示例中,catch参数ex是最终的,因此您不能在catch块中为其分配任何值。
我从未注意到,在处理捕获到的异常的经典案例中,捕获到的异常不是最终的。
我只是想知道为什么这是一件好事?在我想重新抛出它或记录它的消息之前,先修改一下已捕获的异常是否明智?难道不是由引发异常的机制来创建异常,以便它确切地表示它应该做什么?
我从未见过在catch块中修改过异常,也许有人可以指出它的好处吗?
它与方法参数几乎相同:
您 通常 不会修改它们,并且 许多 人都认为应该将它们视为final(是否final在他们面前实际书写是一些辩论的问题)。
final
但是由于没有技术要求,所以final该语言为您提供了选择的选择。
我个人没有充分理由修改catch块的异常引用。