5

遇到让我困惑的事情。为什么我不强制在这里的方法签名中声明“抛出异常”?

  public static void main(String[] args) {
        try
        {
            System.out.println("foo");
            // throw new Exception();
        }
        catch ( Exception e )
        {
            throw e;
        }
    }

现在,如果我启用注释掉的行,它确实会强制我声明它,这是我所期望的。我想这更符合 Java 拼图类别的要求,我无法弄清楚这真的让我很烦恼 :)

4

1 回答 1

8

编译器正在执行数据流分析并意识到可以在该段中抛出的唯一异常是未经检查的。所以,你重新抛出的是一个不需要声明的未经检查的异常。

于 2013-08-30T21:19:31.647 回答