首页 > 解决方案 > Java Exception 产生编译器错误,但是替换异常类型不会产生编译器错误

问题描述

大家好,我有这段异常处理代码,来自Boyarski 和 Selikoff的Java OCA SE 8认证书。我不了解代码的 1 个细节和 1 个变体:

          try {
              throw new RuntimeException();
          } catch (RuntimeException e) {
    29:       throw new RuntimeException();
          } finally {
    31:      throw new Exception();
          } 

照原样,编译器发出此消息:

error: unreported exception Exception; must be caught or declared to be thrown
          throw new Exception();

另一方面,如果我删除第 31 行,一切顺利。所以,我的第一个问题是:为什么第 29 行,一个未捕获的异常(我认为)对编译器来说是可以的?是不是因为RuntimeException()之前已经被抓到了?

第二个问题是:如果我将第 31 行替换为

          throw new RuntimeException();

一切顺利。但为什么 ?try/catch我在街区内没有任何东西finally

欢迎任何帮助回答这两个问题。

谢谢你。

标签: javaexception

解决方案


推荐阅读