我有一个关于java.lang.Exception的问题以及它在throw/throws子句中的考虑方式。异常 - 已选中或未选中的异常类型
我有以下2个例子,我不明白如何处理java.lang.Exception:作为选中或未选中的异常。
下面的方法成功编译:
public double method1() throws Exception {
return 0.7;
}
- 在这里,在我看来,该java.lang.Exception的是威胁 了java.lang.RuntimeException或java.lang.Error的。即使你没有处理它,你也可以声明抛出它。
- 如果不是异常,我们使用了一个检查的异常(这是java.lang.Exception的子类),那么你应该必须在方法体内有一个throw声明(或者调用抛出的方法那个检查异常)。对?
以下不会编译:
private void method2(int age) {
if (age > 30)
throw new Exception();
}
- 这里是我的困惑......如果它被扔类型了java.lang.RuntimeException或java.lang中的子类。它会编译错误。
- 为什么在这种情况下它不能编译?我想这是因为它威胁java.lang.Exception作为检查的异常。但如果是这样,那么为什么method1会编译?
谢谢 路易莎
可能重复[Java:checked vs unchecked exception explanation](http://stackoverflow.com/questions/6115896/java-checked-vs-unchecked-exception-explanation) – Burkhard