背景介紹:
在用到java的一些類庫時,會發現有些類庫用的時候必須要加上try-catch或者throw的關鍵詞。
抽象化描述這個問題:
問題抽象:
1 類庫地作者可以檢測出運行中出現地問題,但是不知道怎么處理這個問題。
2 使用這個類庫地用戶知道怎么怎么去處理這個問題,但是不知道怎么檢測他們
解決:
異常(exception)的作用就是解決這個問題。
1如果一個方法不能決定怎么處理程序中非正常流程出現的問題,那么它可以把這個問題丟(throw)給調用者來處理。
2 如果調用者不愿意處理那么可以繼續丟(throw)給下個調用者,或者如果愿意處理這個問題 那么就接收(catch)這個
問題,然后進行處理。
java異常hierarchy
1 注意:我們所關注的異常是指非error和runtime的異常,也即checkedException(可以被編譯器檢測的異常)
2 error通常是指無法恢復的錯誤,比如超過系統性能的上界。這個error是由系統拋出的。
3 RuntimeException是由程序員代碼的問題 比如空指針
具體操作:
java中的checkedException是個對象。
所以拋出異常時,需要先選定合適的異常種類,然后生成實例拋出
try { // code } catch (ExceptionType e) { // exception handling code }
運行流程:
當代碼遇到異常時,它會忽略其后的代碼,直接跳到其相應的catch中運行
完整的實例:
除0異常處理
public class JavaExceptionTest { public static void main(String[] args) { // TODO Auto-generated method stub try { double a=1/0; } catch(ArithmeticException e) { System.out.PRintln(e.getMessage()); } }}
java的異常類別:
http://www.tutorialspoint.com/java/java_builtin_exceptions.htm
java 異常教學文檔
http://docs.Oracle.com/javase/tutorial/essential/exceptions/index.html
新聞熱點
疑難解答