首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 異常體系全解析:Exception、Error 與檢查/非檢查異常

     編輯:Java 綜合教學

Java 異常類別架構概覽

Java 異常機制是程式健壯性的基石。所有異常類別均繼承自 java.lang.Throwable,主要分為兩大分支:Error(錯誤) 與 Exception(異常)。

1. Error:程式無法恢復的嚴重問題

Error 表示 JVM 自身發生故障,或執行應用時出現的致命錯誤(如 OutOfMemoryError、StackOverflowError、NoClassDefFoundError)。這類錯誤通常不需要也不應由應用程式捕獲處理,屬於「非檢查異常」。

2. Exception:程式可預期並處理的異常

Exception 及其子類別代表程式邏輯可預見、可處理的異常情況。根據編譯器是否強制要求處理,再細分為:

檢查異常(Checked Exception)

  • 除 RuntimeException 及其子類別、Error 及其子類別外,所有 Exception 子類別皆屬檢查異常。
  • 編譯器強制要求:要么用 try-catch 捕獲,要么在方法簽名中用 throws 聲明拋出,否則編譯不通過。
  • 常見範例:IOException、SQLException、ClassNotFoundException、InterruptedException。

非檢查異常(Unchecked Exception)

  • 包含 RuntimeException 及其子類別、以及 Error 及其子類別。
  • 編譯器不強制要求處理,開發者可選擇捕獲或忽略。
  • 常見範例:NullPointerException、ArrayIndexOutOfBoundsException、IllegalArgumentException、ClassCastException。

異常處理最佳實踐

  1. 針對性捕獲:捕獲具體異常類別,避免捕獲大範圍的 Exception 或 Throwable。
  2. 異常轉換與包裝:將底層檢查異常轉為業務層的非檢查異常或自訂異常,避免異常跨層蔓延。
  3. 資源釋放:使用 try-with-resources(Java 7+)自動關閉實作 AutoCloseable 的資源。
  4. 記錄完整堆疊:日誌記錄時保留完整堆疊追蹤,便於問題排查。

圖解異常繼承關係

Java 異常類別繼承圖

異常分類示意圖

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved