一尘不染

Java catch块,捕获的异常不是最终的

java

我正在检查Java SE7的新功能,目前我正在:

http://docs.oracle.com/javase/7/docs/technotes/guides/language/catch-
multiple.html

关于捕获多个功能,当我遇到以下语句时:

注意:如果catch块处理多个异常类型,则catch参数隐式为final。在此示例中,catch参数ex是最终的,因此您不能在catch块中为其分配任何值。

我从未注意到,在处理捕获到的异常的经典案例中,捕获到的异常不是最终的。

我只是想知道为什么这是一件好事?在我想重新抛出它或记录它的消息之前,先修改一下已捕获的异常是否明智?难道不是由引发异常的机制来创建异常,以便它确切地表示它应该做什么?

我从未见过在catch块中修改过异常,也许有人可以指出它的好处吗?


阅读 135

收藏
2020-12-03

共1个答案

一尘不染

它与方法参数几乎相同:

通常 不会修改它们,并且 许多 人都认为应该将它们视为final(是否final在他们面前实际书写是一些辩论的问题)。

但是由于没有技术要求,所以final该语言为您提供了选择的选择。

我个人没有充分理由修改catch块的异常引用。

2020-12-03