天天看點

java error異常_Java異常之 Error 和 Exception

簡單了解 Java 異常

1、實際工作中,遇到的情況不可能是非常完美的。

比如:你寫的某個子產品,使用者輸入不一定符合你的要求;

你的程式要打開某個檔案,這個檔案可能不存在或者檔案格式不對;

你要讀取資料庫的資料,資料可能是空的等;

我們的程式在跑着,記憶體或硬碟可能滿了,等等等等。

2、軟體程式在運作過程中,可能遇到剛剛提到的這些異常問題,我們叫異常,英文是 Exception,意思是例外。

這些例外情況,或者叫異常,怎麼讓我們寫的程式做出合理的處理,而不至于程式奔潰,那我們就需要捕獲異常。

3、異常指程式運作中出現的不期而至的各種狀況,如:檔案找不到、網絡連接配接失敗、非法參數等。

異常可能發生在程式運作期間,它影響了正常的程式執行流程。

要了解 Java 異常處理是如何工作的,需要掌握以下三種類型的異常

1、檢查性異常:最具代表的檢查性異常是使用者錯誤或問題引起的異常,這是程式員無法預見的。

例如要打開一個不存在的檔案時,一個異常就發生了,這些異常在編譯時不能被簡單地忽略。

2、運作時異常:運作是異常是可能被程式員避免的異常。與檢查性異常相反,運作時異常可以在編譯時被忽略。

3、錯誤 ERROR:錯誤不是異常,而是脫離程式員控制的問題。錯誤在代碼中通常被忽略。

例如,當棧溢出時,一個錯誤就發生了,它們在編譯時也檢查不到的。

異常體系結構

1、Java 把異常當作對象來處理,并定義一個基類 java.lang.Throwable 作為所有異常的超類。

2、在 Java API 中已經定義了許多異常類,這些異常類分為兩大類,錯誤 Error 和異常 Exception。

java error異常_Java異常之 Error 和 Exception

Error

1、Error 類對象由 Java 虛拟機生成并抛出,大多數錯誤與代碼編寫者所執行的操作無關。

2、Java 虛拟機運作錯誤(Virtual MachineError),當 JVM 不再有繼續執行操作所需的記憶體資源時,

将出現 OutOfMemoryError。這些異常發生時,Java 虛拟機(JVM)一般會選擇線程終止。

3、還有發生在虛拟機試圖執行應用時,如類定義錯誤(NoClassDefFoundError)、連結錯誤(LinkageError)。

這些錯誤是不可查的,因為它們在應用程式的控制和處理能力之外,而且絕大多數是程式運作時不允許出現的狀。

Exception

1、在 Exception 分支中有一個重要的子類 RuntimeException(運作時異常)

ArrayIndexOutOfBoundsException(數組下标越界)

NullPointerException(空指針異常)

ArithmeticException(算數異常)

MissingResourceException(丢失資源)

ClassNotFoundException(找不到類)等異常,這些異常是不檢查異常,程式中可以選擇捕獲異常,也可以不處理。

2、這些異常一般都是由程式邏輯錯誤引起的,程式應該從邏輯角度盡可能避免這類異常的發生。

3、Error 和 Exception 的差別:Error 通常是災難性的緻命的錯誤,是程式無法控制和處理的,當出現這些異常時,Java 的虛拟機(JVM)一般會選擇終止線程;Exception 通常情況下是可以被程式處理的,并且在程式中應該盡可能的去處理這些異常。

packageexception;

public classDemo1 {public static voidmain(String[] args) {//new 一個匿名内部類,調用 a 方法

new Demo1().a(); //a 調 b,b 調 a,一直無限循環,報異常(Error)

}//a 方法調用 b 方法

public voida(){

b();

}//b 方法調用 a 方法

public voidb() {

a();

}

}