我有一個關於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