Java的異常:Error與Exception

1、 異常機制的概述
      異常機制是指當程序出現錯誤後,程序如何處理。具體來講,異常機制提供了程序退出的安全通道。當出現錯誤後,程序執行的流程發生改變,程序的控制權轉移到異常處理器。編程

      程序錯誤分爲三種:1.編譯錯誤;2.運行時錯誤;3.邏輯錯誤。
      (1)編譯錯誤是由於程序沒有遵循語法規則,編譯程序可以本身發現而且提示咱們錯誤的緣由和位置,這個也是你們在剛接觸編程語言最常遇到的問題。
      (2)運行時錯誤是由於程序在執行時,運行環境發現了不能執行的操做。
      (3)邏輯錯誤是由於程序沒有按照預期的邏輯順序執行。異常也就是指程序運行時發生錯誤,而異常處理就是對這些錯誤進行處理和控制。
2、 異常的結構    
       在 Java 中,全部的異常都有一個共同的祖先 Throwable(可拋出)。Throwable 指定代碼中可用異常傳播機制經過 Java 應用程序傳輸的任何問題的共性。數組

 Throwable: 有兩個重要的子類:Exception(異常)和 Error(錯誤),兩者都是 Java 異常處理的重要子類,各自都包含大量子類。異常和錯誤的區別是:異常能被程序自己能夠處理,錯誤是沒法處理。
      Trowable類中經常使用方法以下:安全

1. 返回異常發生時的詳細信息 public string getMessage(); 2. 返回異常發生時的簡要描述 public string toString(); 3. 返回異常對象的本地化信息。使用Throwable的子類覆蓋這個方法,能夠聲稱本地化信息。若是子類沒有覆蓋該方法,則該方法返回的信息與getMessage()返回的結果相同 public string getLocalizedMessage(); 4. 在控制檯上打印Throwable對象封裝的異常信息 public void printStackTrace();

  Error(錯誤):是程序沒法處理的錯誤,表示運行應用程序中較嚴重問題。大多數錯誤與代碼編寫者執行的操做無關,而表示代碼運行時 JVM(Java 虛擬機)出現的問題。例如,Java虛擬機運行錯誤(Virtual MachineError),當 JVM 再也不有繼續執行操做所需的內存資源時,將出現 OutOfMemoryError。這些異常發生時,Java虛擬機(JVM)通常會選擇線程終止。這些錯誤表示故障發生於虛擬機自身、或者發生在虛擬機試圖執行應用時,如Java虛擬機運行錯誤(Virtual MachineError)、類定義錯誤(NoClassDefFoundError)等。這些錯誤是不可查的,由於它們在應用程序的控制和處理能力之 外,並且絕大多數是程序運行時不容許出現的情況。對於設計合理的應用程序來講,即便確實發生了錯誤,本質上也不該該試圖去處理它所引發的異常情況。在 Java中,錯誤經過Error的子類描述。 編程語言

   Exception(異常):是程序自己能夠處理的異常。Exception 類有一個重要的子類 RuntimeException。RuntimeException 類及其子類表示「JVM 經常使用操做」引起的錯誤。例如,若試圖使用空值對象引用、除數爲零或數組越界,則分別引起運行時異常(NullPointerException、ArithmeticException)和 ArrayIndexOutOfBoundException。
      Exception(異常)分兩大類:運行時異常和非運行時異常(編譯異常)。程序中應當儘量去處理這些異常。
      1.運行時異常:都是RuntimeException類及其子類異常,如NullPointerException(空指針異常)、IndexOutOfBoundsException(下標越界異常)等,這些異常是不檢查異常,程序中能夠選擇捕獲處理,也能夠不處理。這些異常通常是由程序邏輯錯誤引發的,程序應該從邏輯角度儘量避免這類異常的發生。運行時異常的特色是Java編譯器不會檢查它,也就是說,當程序中可能出現這類異常,即便沒有用try-catch語句捕獲它,也沒有用throws子句聲明拋出它,也會編譯經過。
      2.非運行時異常 (編譯異常):是RuntimeException之外的異常,類型上都屬於Exception類及其子類。從程序語法角度講是必須進行處理的異常,若是不處理,程序就不能編譯經過。如IOException、SQLException等以及用戶自定義的Exception異常,通常狀況下不自定義檢查異常。spa

 

  1. 可查異常(編譯器要求必須處置的異常):正確的程序在運行中,很容易出現的、情理可容的異常情況。除了Exception中的RuntimeException及其子類之外,其餘的Exception類及其子類(例如:IOException和ClassNotFoundException)都屬於可查異常。這種異常的特色是Java編譯器會檢查它,也就是說,當程序中可能出現這類異常,要麼用try-catch語句捕獲它,要麼用throws子句聲明拋出它,不然編譯不會經過。
       2. 不可查異常(編譯器不要求強制處置的異常):包括運行時異常(RuntimeException與其子類)和錯誤(Error)。RuntimeException表示編譯器不會檢查程序是否對RuntimeException做了處理,在程序中沒必要捕獲RuntimException類型的異常,也沒必要在方法體聲明拋出RuntimeException類。RuntimeException發生的時候,表示程序中出現了編程錯誤,因此應該找出錯誤修改程序,而不是去捕獲RuntimeException。線程

 

3、Java常見異常
      1. RuntimeException子類:    設計

      2.IOException3d

 

      3. 其餘    指針

 

相關文章
相關標籤/搜索