java異常處理的五個關鍵字:try、catch、finally、throw、throws,在繼承關係中父類異常什麼樣,子類異常什麼樣
1、throw
作用:可以使用throw關鍵字在指定的方法中拋出指定的異常
格式:
throw new xxxException("異常產生的原因");
注意:
1、throw關鍵字必須寫在方法的內部
2、throw關鍵字後邊new的對象必須是Exception或者是exception的子類對象
3、throw關鍵字拋出指定的異常對象,我們必須處理這個異常對象
比如throw關鍵字後邊創建的是RuntimeException或者是RuntimeException的子類對象,我們可以不處理,默認交給jvm處理(打印異常對象,中斷程序)
如果創建的是編譯異常,我們就必須處理這個異常,要麼throws,要麼try…catch
2、throws
當方法內部拋出異常對象的時候,那麼我們就必須處理這個異常對象
可以使用throws關鍵字處理異常對象,會把異常對象聲明拋出給方法的調用者處理,最終交給jvm處理
格式:在方法聲明時使用
修飾符 返回值類型 方法名(參數列表) throws {
throw new XXXException(“產生原因”)
}
注意:throws關鍵字必須寫在方法聲明處,後邊聲明的異常必須是Exception或者是Exception的子類
方法內部如果拋出了多個異常對象,那麼throws後邊必須也聲明多個異常,如果拋出的多個異常對象有子父類關係,那麼直接聲明父類異常即可
調用了一個聲明拋出異常的方法罵我們就必須處理聲明的異常
3、try…catch
格式:
try{
可能會異常的代碼
}catch(定義一個異常變量,用來接收try中拋出的異常對象){
異常處的處理邏輯,產生異常對象之後,怎麼處理異常對象
}
注意事項:
1、try中可能會拋出多個異常對象,那麼就可以使用多個catch來處理這些異常對象
2、如果try中產生了異常,那麼就會執行catch中的異常處理邏輯,執行完畢catch中的邏輯後繼續執行try…catch之後的代碼
3、如果try中沒有產生異常,則不會執行catch中的處理邏輯,執行完try中的菜嗎,繼續執行try…catch之後的代碼
4、finally
finally代碼塊是和try…catch連用的,無論是否出現異常,finally都會執行,無法單獨使用,一般用於資源釋放
格式:
try{
可能會異常的代碼
}catch{
處理異常的邏輯
}finally{
無論是否出現異常都會執行的代碼塊
}
注意:如果finally中有return語句,永遠返回finally中的結果,所以要避免此類事件發生不在finally中寫return語句。