Java異常處理機制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語句最多隻能有一條,根據本身的須要無關緊要)。
注意點:
一、一個try語句必須帶有至少一個catch語句塊或一個finally語句塊,當異常處理的代碼執行結束之後,不會回到try語句去執行還沒有執行的代碼。
二、每一個try語句塊能夠伴隨一個或多個catch語句,用於處理可能產生的不一樣類型的異常對象。
三、不論是否發生了異常,即便try和catch塊中存在return語句,finally都必需要執行
四、finally語句塊只有一種狀況是不會執行的,那就是在執行finally以前遇到了System.exit(0)結束程序運行。
異常的處理方式之二:聲明異常(throws子句)
當CheckedException產生時,不必定馬上處理它,能夠再把異常throws出去。若是一個方法拋出多個已檢查異常,就必須在方法的首部列出全部的異常,之間以逗號隔開。
throw:
1:只能用於方法體內。
2:後面跟異常對象。
3:只能跟一個異常對象
throws:
1:用在方法的聲明處。參數列表的後面方法體的前面。
2:後面跟異常的類型。
3:能夠跟多個異常類型。使用 逗號 分隔。
spa