当前位置: 首页 > 面试题库 >

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

慕承恩
2023-03-14
问题内容

我正在检查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该语言为您提供了选择的选择。

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



 类似资料:
  • 我正在查看Java SE7的新功能,目前我正在: http://docs.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.html 关于捕获多重功能,当我遇到这个语句时: 注意:如果一个捕捉块处理多个异常类型,那么捕捉参数是隐式最终的。在这个例子中,捕捉参数ex是最终的,因此您不能在捕捉块中给它赋值。 我从未注意到

  • 问题内容: 有人告诉我,在Java中,可以在try块中捕获未检查的异常,但是如果捕获了它,就不称为已检查的异常吗? 问题答案: 未检查的异常是不需要在- 块中捕获的异常。未检查的异常是或类的子类。 已检查的异常是需要在- 块中捕获的异常。 可在Java语言规范的11.2节:编译时检查异常中找到检查和未检查异常的定义: 未检查的异常类是类及其子类,以及类及其子类。所有其他异常类都是检查的异常类。 仅

  • 请求(正文)

  • 问题内容: 在Java中,引发 检查 异常(Exception或其子类型- IOException,InterruptedException等)的方法必须声明 throws 语句: 不声明语句的 方法不能 引发检查的异常。 但是在Java中使用安全方法捕获检查的异常仍然合法: 其实没有 有点可笑:编译器知道 e 不是检查的异常,因此可以将其重新抛出。事情甚至有些荒谬,此代码无法编译: 第一个片段是

  • 我有以下2个代码片段,我想知道是什么使java编译器(在Eclipse与Java7)显示错误的第二个片段,为什么不是第一个。 以下是代码片段: 片段1 片段2 在eclipse中,snippet1显示为finally块添加'SuppressWarning',但在snippet2中,它显示为catch块中的throw语句添加'throws或try catch'块。 我详细研究了以下问题,但没有提供任

  • 我只是在练习java,目前我正在试验getter/setter方法和构造函数。java程序的工作原理是,我能够将用户输入存储到对象中,但当我将字符串“Dice and rollers”输入到gametype字符串变量中时,会出现一个挂起的未捕获异常InputMismatch错误。 有人能给我解释一下这是为什么吗? 另外,我在下面分享了我的源代码。 上面的是超类,下面的源代码是构造函数和getter