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

标签 java exception try-catch

我正在检查 Java SE7 的新特性,我目前正处于这一点:

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

关于 catch multiple 特性,当我遇到这个语句时:

Note: 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.

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

我只是想知道为什么这是一件好事?在我猜测重新抛出它或可能记录它的消息之前修改捕获的异常不是不明智的吗?是否应该由 trowing 机制来创建异常,以便它准确地代表它应该做什么?

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

最佳答案

它与方法参数几乎相同:

通常不修改它们并且许多人同意它们应该被视为final(无论是否实际编写final 在他们面前是一些争论的问题)。

但由于没有技术要求表明它必须是 final,因此该语言为您提供了选择权。

就我个人而言,我知道没有充分的理由修改 catch block 的异常引用。

关于Java catch block ,捕获的异常不是最终的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16959436/

相关文章:

java - T、U、V、S、E 等通用参数有什么用?

java - 如何使用 mockito 检查是否没有抛出异常?

从 std::exception 派生的 C++ 自定义异常未被捕获

r - 使用 tryCatch() 捕获引导循环

c++ - 在 C++ 中执行 try catch 时没有输出

java - 以编程方式创建 Spring Framework 任务?

java - 使用 Eclipse EE 的 jPOS-EE 客户端、服务器模拟器

java - 正则表达式使用 ( ) 来搜索而不是指示组

c++ - ~A(){} 和 ~A() throw(){} 有什么区别,其中 A 是类名?

node.js - 中途停止 promise 链