1. 程式人生 > >Java異常機制

Java異常機制

java異常類 int poi 處理異常 title turn 多條 一個 機制

Java異常機制

  軟件程序在運行過程中,非常可能遇到剛剛提到的這些問題,我們稱之為異常,英文是:Exception。在Java的異常處理機制中,引進了很多用來描述和處理異常的類,稱為異常類。異常類定義中包含了該類異常的信息和對異常進行處理的方法。 所謂異常處理,就是指程序在出現問題時依然可以正確的執行完。
Java是采用面向對象的方式來處理異常的。處理過程:
1. 拋出異常:在執行一個方法時,如果發生異常,則這個方法生成代表該異常的一個對象,停止當前執行路徑,並把異常對象提交給JRE。
2. 捕獲異常:JRE得到該異常後,尋找相應的代碼來處理該異常。JRE在方法的調用棧中查找,從生成異常的方法開始回溯,直到找到相應的異常處理代碼為止。


常見的異常:
1:ArithmeticException 數學異常,被0除
2:InputMismatchException 輸入類型不匹配異常
3:java.lang.ArrayIndexOutOfBoundsException:數組下標越界異常。
4:java.io.IOException : javaIO 異常。
5:java.lang.NullPointerException:空指針異常,使用了尚未初始化的對象。
異常的分類:
技術分享圖片
Error
Error是程序無法處理的錯誤,表示運行應用程序中較嚴重問題。大多數錯誤與代碼編寫者執行的操作無關,而表示代碼運行時 JVM(Java 虛擬機)出現的問題。
技術分享圖片

Exception


Exception是程序本身能夠處理的異常,如:空指針異常(NullPointerException)、數組下標越界異常(ArrayIndexOutOfBoundsException)、類型轉換異常(ClassCastException)、算術異常(ArithmeticException)等。
Exception類是所有異常類的父類,其子類對應了各種各樣可能出現的異常事件:Java異常可分為:
1. RuntimeException 運行時異常
2. CheckedException 已檢查異常

RuntimeException運行時異常
這類異常通常是由編程錯誤導致的,所以在編寫程序時,並不要求必須使用異常處理機制來處理這類異常,經常需要通過增加“邏輯處理來避免這些異常”。
空指針異常:

技術分享圖片
解決空指針異常:
技術分享圖片
數組角標越界異常:
技術分享圖片

CheckedException已檢查異常
  所有不是RuntimeException的異常,統稱為Checked Exception,又被稱為“已檢查異常”,如IOException、SQLException等以及用戶自定義的Exception異常。 這類異常在編譯時就必須做出處理,否則無法通過編譯.
技術分享圖片
異常處理方式:常的處理方式有兩種:使用“try/catch”捕獲異常、使用“throws”聲明異常。
異常的處理方式之一:捕獲異常
  捕獲異常是通過3個關鍵詞來實現的:try-catch-finally。用try來執行一段程序,如果出現異常,系統拋出一個異常,可以通過它的類型來捕捉(catch)並處理它,最後一步是通過finally語句為異常處理提供一個統一的出口,finally所指定的代碼都要被執行(catch語句可有多條;finally語句最多只能有一條,根據自己的需要可有可無)。
註意點:
1、一個try語句必須帶有至少一個catch語句塊或一個finally語句塊,當異常處理的代碼執行結束以後,不會回到try語句去執行尚未執行的代碼。
2、每個try語句塊可以伴隨一個或多個catch語句,用於處理可能產生的不同類型的異常對象。
3、不管是否發生了異常,即使try和catch塊中存在return語句,finally都必須要執行
4、finally語句塊只有一種情況是不會執行的,那就是在執行finally之前遇到了System.exit(0)結束程序運行。
異常的處理方式之二:聲明異常(throws子句)
當CheckedException產生時,不一定立刻處理它,可以再把異常throws出去。如果一個方法拋出多個已檢查異常,就必須在方法的首部列出所有的異常,之間以逗號隔開。
throw:
1:只能用於方法體內。
2:後面跟異常對象。
3:只能跟一個異常對象
throws:
1:用在方法的聲明處。參數列表的後面方法體的前面。
2:後面跟異常的類型。
3:可以跟多個異常類型。使用 逗號 分隔。

Java異常機制