下面節(jié)選自類 JSONObject:
public String getString(String key) {
this.verifyIsNull();
Object o = this.get(key);
if(o != null) {
return o.toString();
} else {
throw new JSONException("JSONObject[" + JSONUtils.quote(key) + "] not found.");
}
}
以上直接拋出異常,而沒有在方法頭部聲明throws。
但是我自己寫的方法中,是同時有throw和throws的。去掉throws就會報錯:
Unhundled Exception 。
這是為什么?
2 回答

慕運維8079593
TA貢獻1876條經(jīng)驗 獲得超5個贊
java異常一般分為Checked
異常和Runtime
異常,所有RuntimeException
類及其子類的實例被稱為Runtime
異常,不屬于該范疇的異常則被稱為CheckedException
。
Java認(rèn)為Checked
異常都是可以被處理的異常,所以Java程序必須顯示處理Checked異常。如果程序沒有處理Checked
異常,該程序在編譯時就會發(fā)生錯誤無法編譯。
而RuntimeException
異常如果沒有顯示的捕獲處理則由系統(tǒng)自動檢測并將它們交給缺省的異常處理程序。JSONException
應(yīng)該是RuntimeException
的子類,可以不用顯式的對它try...catch或者throws.如果沒有對該異常的處理會交給jvm處理。
而你自己寫的異??隙ㄊ菍儆贑hecked異常,被認(rèn)為是可以避免的異常,必須try...catch或者顯式的拋出throws不然編譯報錯。如果你自定義的異常想像throw new JSONException
這樣處理,則你自定義的異常需要繼承RuntimeException
即可。
添加回答
舉報
0/150
提交
取消