異常處理
異常是程式中的一些錯誤,但并不是所有的錯誤都是異常,并且錯誤有時候是可以避免的。比如說,你的代碼少了一個分号,那麼運作出來結果是提示是錯誤 java.lang.Error;如果你用System.out.println(100/0),那麼你是因為你用0做了除數,會抛出 java.lang.ArithmeticException 的異常。
常見的異常
輸入輸出異常:IOException算術異常類:ArithmeticExecption空指針異常類:NullPointerException類型強制轉換異常:ClassCastException操作資料庫異常:SQLException檔案未找到異常:FileNotFoundException數組負下标異常:NegativeArrayException數組下标越界異常:ArrayIndexOutOfBoundsException違背安全原則異常:SecturityException檔案已結束異常:EOFException字元串轉換為數字異常:NumberFormatException方法未找到異常:NoSuchMethodException
異常處理方式
異常處理關鍵字
通過try、catch捕獲異常
try{
// 程式代碼
}catch(ExceptionName e1){
//Catch 塊
}
通過throws抛出異常
定義一個方法的時候可以使用throws關鍵字聲明。使用throws關鍵字聲明的方法表示此方法不處理異常,而交給方法調用處進行處理。
throw關鍵字抛出異常
throw關鍵字作用是抛出一個異常,抛出的時候是抛出的是一個異常類的執行個體化對象,在異常進行中,try語句要捕獲的是一個異常對象,那麼此異常對象也可以自己抛出。
知識點拓展
try{return;}catch(){}finally{}return;
try-catch
通過上面這個簡短的語句,我們來分析這句話的執行順序。按照程式的執行順序,代碼段首先進入try語句,因無異常抛出,代碼将要return的内容儲存在記憶體中,然後執行finally,因finally中無可執行内容,再轉回try中執行return,整個代碼段執行結束,而finally後面的return是不會執行的。如果有複雜點的場景歡迎在下方留言,我們一同來分析解答。
1、不管有沒有出現異常,finally塊中代碼都會執行;2、當try和catch中有return時,finally仍然會執行;3、finally是在return後面的表達式運算後執行的(此時并沒有傳回運算後的值,而是先把要傳回的值儲存起來,不管finally中的代碼怎麼樣,傳回的值都不會改變,仍然是之前儲存的值),是以函數傳回值是在finally執行前确定的;4、finally中最好不要包含return,否則程式會提前退出,傳回值不是try或catch中儲存的傳回值。
後記
異常的捕獲、抛出和異常處理是維持代碼健壯性的重要條件。靈活使用異常及處理,不僅能最大限度的避免出錯,也能增加軟體的容錯機制。