1. 程式人生 > 其它 >java基礎-異常類

java基礎-異常類

異常類:

在java中把各種異常現象進行了抽象形成了異常類

Exception 程式可以處理的,程式設計師在編譯時必須進行預處理,否則編譯時報錯叫做:編譯時異常

RuntimeException 執行時異常,這類異常不需要預處理,通過規範程式碼可避免

如何避免空指標異常 & 型別轉換異常

1)如何避免空指標:
在訪問物件的例項成員前,先判斷物件是否為null
2)如何避免型別轉換異常(ClassCastException)
在轉換前先通過instanceof堆中物件是否為目標型別,是的話就轉,不是的話不轉
Throwable丟擲異常:方法getMessage();printStackTrace(); 獲取異常資訊 列印堆中異常資訊

受檢異常必須預處理,否則編譯報錯,有兩種預處理方式:

1)捕獲處理(try catch)

try catch語法格式:

try{
//對可能產生異常的程式碼進行檢查,如果try程式碼的某條語句產生了異常立即跳轉到catch執行,try程式碼後面的程式碼塊不再執行  try程式碼塊可能會有多個受檢異常需要預處理可以用多個catch
}catch(異常型別 e1){
 //捕獲異常型別1的異常進行處理,在開發階段,一般的處理方式:獲得異常資訊,列印異常跟蹤棧資訊
e1.printStackTrace();  //在部署後,如果有異常,一般吧異常資訊列印到日誌檔案內
}catch(異常型別 e2){
 //捕獲異常型別2的異常進行處理,如果捕獲的異常有繼承關係,先捕獲子類異常再捕獲父類異常
}finally{
//不管是否產生了異常,總會執行finally語句總會執行,一般情況下會在finally語句中釋放資源; 
}

捕獲異常程式碼例子:

2)丟擲處理

宣告丟擲了一個異常 誰呼叫該方法誰處理該異常;在定義方法時把異常丟擲,提醒方法的使用者處理異常

在處理異常如何選擇是 捕獲還是丟擲?

1)一般情況下,在呼叫其他方法時如果方法有受檢異常需要處理,選擇捕獲處理
2)在定義方法時 如果方法體有收件異常需要處理 選擇捕獲||丟擲
如果方法體中通過throw丟擲一個異常物件,所在的方法應該使用throw宣告該物件

方法覆蓋中的異常處理:

子類方法的異常比父類異常更小

a)父類方法未丟擲異常,則子類重寫方法之後也不丟擲異常
b)父類方法丟擲異常,子類可丟擲父類異常 也可丟擲父類的自異常 也可不丟擲異常