java代碼中經常碰到各種需要處理異常的時候,比如什麼IOException SQLException NullPointException等等,在開發web項目中,遇到異常,我現在做的就是將其拋出,即在catch中throw new Exception()。這個throw new Exception也是有講究的。
貼出異常簡略圖:
異常就分兩大類:checked檢查和unchecked非檢查異常。
checkedException在編寫代碼的時候就必須要進行異常處理,uncheckedException在編寫代碼時可以不用處理,因爲它是在程序運行時纔可能會拋出異常。
拖拽可看大圖。
一段代碼中,可能會拋出多個異常,這就涉及到多重異常。這時對異常的處理就有點講究了。
總的說來,如果異常間存在繼承關係,則應該先把小異常放上面,越大的越寫在後面。如果一開始就處理最大的異常,則它下面的子類在編譯器中都會報錯。如:
StringBuffer sb=null;
try {
sb.append("1");
System.err.println(sb.toString());
} catch (RuntimeException e) {
e.printStackTrace();
}catch (NullPointerException e){
e.printStackTrace();
}在編譯器中會給出如下錯誤:
Unreachable catch block for NullPointerException. It is already handled by the catch block for RuntimeException
NullPointerExeption無法捕獲,因爲已經在RuntimeException中捕獲了。
處理異常時,必須提到異常轉換和異常鏈。
重寫方法時需要注意與原方法所拋出的異常類型一致或者是其子異常,或者不拋出異常,亦或者拋出RuntimeException異常。
異常設計的基本原則:
開發web項目時,遇到400,404,500等問題時,可以通過在web.xml中設置相關屬性,即可跳轉到指定頁面
<error-page>
<error-code>400</error-code>
<location>error.jsp</location>
</error-page>
<error-page>
<error-code> 500 </error-code>
<location> error.jsp </location>
</error-page>
<error-page>
<error-code> 405 </error-code>
<location> notfound.jsp </location>
</error-page>