遇到令我困惑的事情。为什么我没有被迫在方法签名中声明“抛出异常”?
public static void main(String[] args) {
try
{
System.out.println("foo");
// throw new Exception();
}
catch ( Exception e )
{
throw e;
}
}
现在,如果我启用注释掉的行,它会强制我声明它是我所期望的。我想这在Java拼图类别中有更多的资格,而且我无法弄清楚它是否真的让我烦恼:)
答案 0 :(得分:8)
编译器正在进行数据流分析,并意识到可以在该段中抛出的唯一异常未经检查。所以,你重新抛出的是一个未经检查的异常,不需要声明。