为什么我没有被迫在这里捕获异常?

时间:2013-08-30 21:16:17

标签: java

遇到令我困惑的事情。为什么我没有被迫在方法签名中声明“抛出异常”?

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

现在,如果我启用注释掉的行,它会强制我声明它是我所期望的。我想这在Java拼图类别中有更多的资格,而且我无法弄清楚它是否真的让我烦恼:)

1 个答案:

答案 0 :(得分:8)

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