java基礎-異常類
阿新 • • 發佈:2021-08-10
異常類:
在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)父類方法丟擲異常,子類可丟擲父類異常 也可丟擲父類的自異常 也可不丟擲異常