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

Java 標準異常體系全景圖:Throwable、Error 與 Exception 階層解析

     編輯:Java 相關知識

Java 異常處理機制的核心在於 java.lang.Throwable 類別及其兩大直系子類:Error 與 Exception。理解這層階層結構,是掌握 Java 錯誤處理的基石。本文將梳理標準異常體系的脈絡、關鍵類別用途,以及如何查閱官方文件掌握日益擴充的異常清單。

Throwable 雙子星:Error vs Exception

Throwable 是所有可被 throw 陳述式拋出的類別的共同祖先。其兩個直接子類分工明確:

1. Error:嚴重系統錯誤,不應捕獲

  • 代表 JVM 層面或底層系統的災難性故障
  • 典型範例:OutOfMemoryError、StackOverflowError、NoClassDefFoundError
  • 原則上不應嘗試捕獲或恢復,因為通常意味著執行環境已無法正常運作
  • 屬於未檢查異常(不強制 throws 宣告)

2. Exception:程式可處理的異常情況

  • 涵蓋應用程式邏輯中所有可預期、可處理的錯誤狀態
  • 進一步細分為兩大派系:
    • 已檢查異常:繼承 Exception 但不繼承 RuntimeException(如 IOException、SQLException)。編譯器強制處理。
    • 未檢查異常:繼承 RuntimeException(如 NullPointerException、IllegalArgumentException)。編譯器不強制處理。

常見標準異常分類速查

套件/類別代表異常典型觸發情境
java.langNullPointerException, ArrayIndexOutOfBoundsException, IllegalArgumentException, ClassCastException程式邏輯錯誤:空參考、越界、參數非法、型別轉換失敗
java.ioIOException, FileNotFoundException, EOFExceptionI/O 操作失敗:檔案不存在、讀寫錯誤、流意外結束
java.netSocketException, UnknownHostException, ConnectException網路通訊異常:連線失敗、主機名解析失敗、Socket 錯誤
java.sqlSQLException, SQLSyntaxErrorException資料庫操作錯誤:SQL 語法錯誤、連線中斷、資料完整性違規
java.utilNoSuchElementException, ConcurrentModificationException集合操作異常:迭代器無元素、並發修改檢測

如何高效查閱與掌握異常

Java 標準庫隨版本持續新增異常類別,死記名單無意義。建議採取:

  1. 善用官方 JavaDoc:java.lang.Exception 頁面的「Direct Known Subclasses」列出所有直系子類,可遞迴探索完整階層。
  2. 關注套件歸屬:異常的完整類別名(如 java.io.IOException)即揭示其所屬功能域,比單看類別名更有資訊量。
  3. 掌握核心概念而非背誦清單:理解「已檢查/未檢查」分野、異常鏈(cause)、try-with-resources 自動關閉資源等機制,比記住上百個異常名稱實用得多。

自訂異常與標準體系的整合

建立自訂異常時,應依據錯誤性質選擇繼承鏈:

  • 屬於可預期、呼叫端應處理的業務錯誤 → 繼承 Exception(已檢查)
  • 屬於程式邏輯缺失、不應發生的錯誤 → 繼承 RuntimeException(未檢查)
  • 需區分錯誤層級時 → 建立自訂異常階層(如 BusinessException extends Exception、ValidationException extends BusinessException)

熟悉標準異常體系不僅能讓你精準捕獲與拋出異常,更能在設計 API 時提供符合 Java 慣例的錯誤處理契約。

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