個人主頁:【😊個人主頁】
系列專欄:【??初識JAVA】
文章目錄
- 前言
- 三種類型的異常
- 異常處理
- JAVA內置異常類
- Exception 類的層次
前言
異常是程序中的一些錯誤,但并不是所有的錯誤都是異常,并且錯誤有時候是可以避免的,學習一些異常處理方式往往可以使我們編程的時間大大減少。
三種類型的異常
- 檢查性異常:最具代表的檢查性異常是
用戶錯誤或問題引起的異常
,這是程序員無法預見的。例如要打開一個不存在文件時,一個異常就發生了,這些異常在編譯時不能被簡單地忽略。- 運行時異常: 運行時異常是
可能被程序員避免的異常
。與檢查性異常相反,運行時異常可以在編譯時被忽略。- 錯誤:
錯誤不是異常
,而是脫離程序員控制的問題。錯誤在代碼中通常被忽略。例如,當棧溢出時,一個錯誤就發生了,它們在編譯也檢查不到的。
異常處理
Java中的異常處理是一種機制,用于處理程序中可能出現的錯誤和異常。當程序遇到錯誤或異常時,它會產生一個異常對象,并拋出該對象,然后程序控制權就會被傳遞到相應的異常處理程序中。
主要步驟:
- 在程序中可能發生異常的代碼周圍使用try-catch語句塊。
- 在try語句塊中包含可能產生異常的代碼。
- 在catch語句塊中編寫處理異常的代碼。
- 可以使用多個catch塊來處理不同類型的異常
- 可以使用finally語句塊來在任何情況下執行某些代碼(例如關閉文件或釋放資源)。
try {// 可能會拋出異常的代碼
} catch (ExceptionType1 ex) {// 處理類型為ExceptionType1的異常
} catch (ExceptionType2 ex) {// 處理類型為ExceptionType2的異常
} finally {// 在try或catch塊結束后一定會執行的代碼
}
我們使用了一個try-catch-finally語句塊來處理可能出現的異常。如果try塊中的代碼拋出了類型為ExceptionType1的異常,那么程序將跳轉到第一個catch塊,并執行相應的異常處理代碼。如果try塊中的代碼拋出了類型為ExceptionType2的異常,那么程序將跳轉到第二個catch塊,并執行相應的異常處理代碼。無論在try塊中發生了什么,finally塊中的代碼都會被執行
JAVA內置異常類
為了處理可能出現的異常,Java提供了一些內置的異常類
Java 語言定義的一些異常類在 java.lang 標準包中。
標準運行時異常類的子類是最常見的異常類。由于 java.lang 包是默認加載到所有的 Java 程序的,所以大部分從運行時異常類繼承而來的異常都可以直接使用。
常見的Java內置異常類:
ArithmeticException:數學運算異常,例如除以零操作。
ArrayIndexOutOfBoundsException:數組下標越界異常,例如訪問不存在的數組元素。
ClassNotFoundException:類找不到異常,例如使用Class.forName()方法時,找不到所需的類。
IOException:輸入輸出異常,例如讀取或寫入文件時發生的異常。
NullPointerException:空指針異常,例如調用空對象的方法或屬性。
IllegalArgumentException:非法參數異常,例如傳遞給方法的參數不合法。
InterruptedException:線程中斷異常,例如調用Thread.sleep()方法時,線程被其他線程中斷。
RuntimeException:運行時異常,例如在程序運行過程中發生的未知異常。
每個異常類都有自己的特點和處理方式,處理異常是Java編程中的一個重要概念
Exception 類的層次
所有的異常類是從 java.lang.Exception 類繼承的子類。
Exception 類是 Throwable 類的子類。除了Exception類外,Throwable還有一個子類Error 。
Java 程序通常不捕獲錯誤。錯誤
一般發生在嚴重故障時,它們在Java程序處理的范疇之外
。
Error 用來指示運行時環境發生的錯誤。
例如,JVM 內存溢出。一般地,程序不會從錯誤中恢復。
異常類有兩個主要的子類:IOException 類和 RuntimeException 類。