java異常處理總結

JAVA異常

throwable

error

  • jvm錯誤等程序無法恢復的錯誤

exception

  • 程序可處理的編程錯誤

runtimeException

  • jvm運行時異常,換句話說jvm在編譯時不會檢查,直至運行時纔會拋出
  • jvm認爲這類異常可以不處理

ckecked Exception

  • jvm在編譯時會檢查checked exceptioException,如果程序未處理該異常,無法通過編譯
  • jvm認爲這類異常必須處理

異常分類

JAVA異常分類

異常處理

try-catch-finally

try-with-resource

try (BufferedReader br = new BufferedReader(new FileReader(path))) {
    ......
}

// 等同於
BufferedReader br = null;
try  {
    br = new BufferedReader(new FileReader(path));
    ......
} finally {
    br.close();
}
  • try執行結束後,會自動執行資源的close方法
  • 資源必須實現java.lang.AutoCloseable接口或java.io.Closeable接口

finally

  • 在程序不退出的情況下,走完try/catch一定會執行finally
    finally會導致異常丟失
  • finally中的return/throw會覆蓋try/catch中的return/throw
  • 因此,建議finally僅做資源回收,不要涵蓋業務邏輯

throw

  • 方法內部拋出異常
  • throw等同於return, 因此和return不能共存

throws

  • 方法上拋出異常

特殊技巧:將checkedException包裝成RuntimeException

  • 使用場合
    • 父類未拋出異常,理論上子類的異常範圍應小於父類,如果子類中拋出範圍更大或其他類型的checkedException,爲了避免編譯錯誤,可以將該異常包裝成RuntimeException
    • Spring框架對JDBC數據源連接的處理。java程序通過jdbc連接數據庫時,需要處理很多checkedException。Spring在封裝jdbc數據源連接時,爲了避免將checkedException拋出給用戶處理,將這些異常封裝成了RuntimeException。
發佈了26 篇原創文章 · 獲贊 0 · 訪問量 6401
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章