複習筆記11 異常的產生和處理
1 異常體系&異常處理
1.1 異常概述
我們在寫程式碼的時候,經常的出現一些小問題,那麼為了方便我們處理這些問題,java為我們提供了異常機制
在Java中,把異常資訊封裝成了一個類。當出現了問題時,就會建立異常類物件並丟擲異常相關的資訊(如異常出現的位置、原因等)。
在Java中使用Exception類來描述異常。
檢視API中Exception的描述,Exception 類及其子類是 Throwable 的一種形式,它用來表示java程式中可能會產生的異常,並要求對產生的異常進行合理的異常處理。
異常包含了錯誤的型別、原因以及位置
異常:不正常,我們在程式碼的時候出現的編譯或者執行時的錯誤
異常的體系結構:
Throwable(最頂層)
Error:出現的不能夠處理的嚴重問題
Exception:可以處理的問題
1.2 異常處理
1.2.1 JVM預設處理方式
如果出現異常我們沒有處理,jvm會幫我們進行處理,他會把異常的型別,原因還有位置顯示在命令列並且還終止了程式,異常後面的程式碼將不再執行
1.2.2 try...catch方式處理異常
捕獲:Java中對異常有針對性的語句進行捕獲,可以對出現的異常進行指定方式的處理捕獲異常格式:
try {
//需要被檢測的語句。
}
catch(異常類 變數) { //引數。
//異常的處理語句。
}
finally {
//一定會被執行的語句。
}
try:該程式碼塊中編寫可能產生異常的程式碼。
catch:用來進行某種異常的捕獲,實現對捕獲到的異常進行處理。
try...catch的執行順序:
* 首先執行try語句
* 如果發現異常,異常下面的程式碼不再執行,直接跳入catch語句中,catch語句結束後,整個try...catch結束
* 如果沒有發現異常,try語句執行結束後,try...catch直接結束, 不在執行catch語句
1.2.3 throws方式處理異常
throws使用:
許可權修飾符
}
1.2.4 多異常處理
如何處理多個異常:
可以使用多個try...catch語句
使用一個try和多個catch
多個catch之間的順序:
多個catch之間可以有子父類
平級之間沒有順序關係
如果有子父類,父類異常必須放在後面
2 Throwable常用方法和自定義異常
2.1 Throwable常用方法
String getMessage() : 原因
String toString() 型別和原因
void printStackTrace():型別原因和位置
2.2 finally的概述和應用場景
finally使用格式:
try{
}catch(異常型別 異常變數){
}finally{
//釋放資源的程式碼
}
2.3 編譯時異常&執行時異常
執行時期異常:RuntimeException的子類就是執行時期異常,在編譯時期可以自由選擇處理或者不處理
編譯時期異常:是Exception的子類,非RuntimeExcpetion的子類,在編譯時期必須處理
2.4 自定義異常
throws:處理異常的一種方式,把異常丟擲,由呼叫者來處理
throw:製造異常的方式,並且結束方法
注意:如果丟擲(throw)的是編譯時期異常,必須在方法宣告處丟擲(throws)
寫一個類去繼承Exception或者RuntimeException,然後實現多個構造即可