1. 程式人生 > 實用技巧 >Java 異常(一)

Java 異常(一)

1、異常概念

概念:指的是程式在執行過程中,出現的非正常的情況,最終導致JVM的非正常停止。

在Java的面向物件的程式語言中,異常本身就是一個類,產生異常就是建立異常物件並丟擲一個異常物件。Java處理異常的方式是中斷處理。

2、異常體系

異常的根類:java.lang.Throwable,其中的兩個子類:java.lang.Error 與 java.lang.Exception。

Throwable體系:

  • Error:無法通過處理的錯誤,只能事先避免。
  • Exception:表示異常,產生的異常程式設計師可以通過程式碼糾正,使程式繼續執行,是必須要處理的。

Throwable中常用方法:

  • public void printStackTrace() : 列印異常詳細資訊(包含了異常型別,異常原因,還包括異常出現的位置)。
  • public String getMessage(): 獲取發生異常的原因(提示給使用者的時候,就提示錯誤原因)。
  • public String toString(): 獲取異常的型別和異常描述資訊(不常用)。

3、異常分類

  • 編譯時期異常:checked異常。在編譯時期,就會檢查,如果沒有處理異常,則編譯失敗。(如日期格式化異常)
  • 執行時期異常:runtime異常。在執行時期,檢查異常,在編譯時期,執行異常不會編譯器檢測(不報錯)

4、異常的產生過程解析

工具類

1 public class ArrayTools {
2     //對給定的陣列通過給定的角標獲取元素
3     public static int getElement(int[] arr, int index) {
4         int element = arr[index];
5         return element;
6     }
7 }

測試類

1 public class ExceptionDemo {
2     public static void main(String[] args) {
3         int[] arr = {1, 2, 3};
4 intnum = ArrayTools.getElement(arr, 4); 5 System.out.println("num=" + num); 6 System.out.println("over"); 7 } 8 }

上述過程如圖所示:

a. 在測試類中呼叫方法,但在陣列中未找到4索引,倒置執行時發生了異常,這個異常JVM認識。ArrayIndexOutOfBoundsException,這個異常Java本身有描述,描述內容包括,異常的名稱,異常的內容,異常的產生位置。Java 將這些資訊直接封裝到異常物件中,newArrayIndexOutOfBoundsException(4);

b. throw newArrayIndexOutOfBoundsException(4); 產生異常物件

c. JVM將產生的異常拋給呼叫者main() 方法

d. main() 方法接收到了陣列索引越界異常物件。由於main()方法並沒有進行處理異常,main()方法就會繼續把異常拋給呼叫者JVM。當JVM收到異常後,將異常物件中的名稱,異常內容,位置都顯示在螢幕上。同時讓程式立刻終止。