異常機制( 就是當程式出現錯誤,程式安全退出的機制):
- 異常:
- RuntimeException 運作時異常
-
CheckedException
已檢查異常:如IOException、SQLException等以及使用者自定義的Exception異常
-
- 捕捉異常(在目前方法中進行捕捉,然後處理該異常):try catch(先小後大) finally
try(用來存放的是可能發生異常的Java語句):一個try語句必須帶有至少一個catch語句塊和一個finally語句塊
catch(用來激發被捕獲的異常):常用方法,這些方法均繼承自Throwable類。
Exception e(Exception是try代碼塊傳遞給catch代碼塊的變量類型,e是變量名)
e.toString ()方法,顯示異常的類名和産生異常的原因
e.getMessage()方法,隻顯示産生異常的原因,但不顯示類名。
e.printStackTrace()方法,用來跟蹤異常事件發生時堆棧的内容。
如果異常類之間有繼承關系,在順序安排上需注意。越是頂層的類,越放在下面,也就是先捕獲子類異常再捕獲父類異常。再不然就直接把多餘的catch省略掉。
finally:1.通常在finally中關閉程式塊已打開的資源,比如:關閉檔案流、釋放資料庫連接配接等(注意順序:先打開的最後關閉)。
2.即使try和catch塊中存在return語句,finally語句也會執行。是在執行完finally語句後再通過return退出。
3.
finally語句塊隻有一種情況是不會執行的,那就是在執行finally之前遇到了System.exit(0)結束程式運作。(finally語句塊中發生了異常、程式所在的線程死亡、關閉CPU)
-
聲明抛出異常(目前方法并不需要處理發生的異常,而是向上傳遞(抛出)給調用它的方法(方法調用者)處理, 如果一個方法中可能産生某種異常,但是并不能确定如何處理這種異常,則應根據異正常範在方法的首部聲明該方法可能抛出的異常。):throws
:
- 重寫時注意子類異常範圍小于父類
- 向上抛出後,方法調用者不想處理,還可繼續向上抛出
- Error,RuntimeException或它們的子類,可以不throws,最終被系統抛出
- 手動抛出異常:throw:通常用于方法體中,程式執行到throw立即終止
一般在方法中手動抛出異常,該方法要throws給上一級(一般是main),main函數中調用該方法時要try-catch捕捉。
- 自定義異常
數中調用該方法時要try-catch捕捉。
- 自定義異常
- extends Exception或者他的子類