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

彼得·贾洛维奇(Peter Jaloveczki):

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

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

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

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

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

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

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

约阿希姆·绍尔(Joachim Sauer):

它与方法参数几乎相同:

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Java异常的catch块中会捕获断言错误吗?

catch块内的Java异常

在try块中捕获的非检查异常不是Java中的检查异常吗?

在Java中是否可以在同一catch块中捕获两个异常?

Java RuntimeException捕获多个catch块

使用最终成员处理构造函数中捕获的Java异常

在Java 7 multicatch块中,捕获的异常的类型是什么?

对各种异常使用try-catch块(java)

线程“主”中的异常java.security.UnrecoverableKeyException:给定的最终块未正确填充

当最终抛出异常时,为什么Java不支持从try / catch丢失的异常中检索异常?

try块引发异常,但catch块未捕获异常

在 try/catch 块中未捕获异常

@ try @ catch块未捕获异常内部

异常未捕获在try catch块中

Java尝试捕获块

尝试在Java中最终捕获

Java Try Catch块

Java“最终”异常抛出规则

在ASP.NET C#中捕获所有异常,而不是在try {} catch {}块中捕获每个方法

未捕获Java异常

Java异常未捕获?

Java:捕获特定异常

Java 7-> Java 8:AES导致异常:“ BadPaddingException:给定的最终块未正确填充”与BufferedReader和ZipStreams结合使用

如何在单个catch块中处理所有java.net异常?

Java运行代码是否仅在try和catch块中未引发异常的情况下?

如何在不引发Java异常的情况下摆脱try / catch块

不能使用try / catch块处理Java未检查的异常?

我可以在同一catch子句中捕获多个Java异常吗?

尝试catch不捕获错误的数字输入(还获取java.lang.arithmatic异常/零)