Java 中的異常處理

在java中,全部的異常都有一個共同的祖先java.lang包中的Throwable類。Throwable:有兩個重要的子類:Exception(異常)和Error(錯誤),兩者都是java異常處理的重要子類,各自都包含大量子類。java

Error(錯誤):是程序程序沒法處理的錯誤,表示運行應用程序中較嚴重問題。大多數錯誤與代碼編寫者執行的操做無關,而表示代碼運行時JVM出現問題。例如,java虛擬機運行錯誤(Virtual MachineRrror),當JVM不在有繼續執行操做所需的內存資源時,將出現OutOfMemoryError。這些異常發生時,JVM通常會選擇線程終止。spa

     這些錯誤表示故障發生在虛擬機自身,或者發生在虛擬機試圖執行應用時,如java虛擬機運行錯誤(Virtual MachineRrror)、類定義錯誤(NoClassDefFoundError)等。這些錯誤是不可查的,由於它們在應用程序的控制和處理能力以外,並且絕大多數是程序運行時不容許出現的狀況。對於設計合理的一個應用程序來講,即便發生了錯誤,本質上也不該該試圖去處理它所引發的異常情況,在java中,錯誤經過Error的子類描述。線程

Exception(異常):是程序自己能夠處理的異常。Exception類有一個重要的子類RuntimeException。RuntimeException異常由java虛擬機拋出。NullPointerException(要訪問的變量沒有引用任何對象時,拋出)、ArithmeticException(算術運算異常,一個整數除以0時,拋出該異常)和 ArrayIndexOutOfBoundsException (下標越界異常)。 設計

注意:異常和錯誤的區別:異常是能被程序自己處理,錯誤是沒法處理的對象

Throwable 類經常使用方法
public string getMessage() : 返回異常發生時的詳細信息
public string toString() : 返回異常發生時的簡要描述
public string getLocalizedMessage() : 返回異常對象的本地化信息。使用 Throwable 的子類覆蓋這個方法,可
以聲稱本地化信息。若是子類沒有覆蓋該方法,則該方法返回的信息與 getMessage ()返回的結果相同
public void printStackTrace() : 在控制檯上打印 Throwable 對象封裝的異常信息
 
異常處理總結:
  try塊:用於捕獲異常。其後可接零個或多個catch塊,若是沒有catch塊,則必須跟一個finally塊。
  catch塊:用於處理try捕獲到的異常
  finally塊:不管是否捕捉或者處理異常,finally塊裏的語句都會被執行。當在try塊或者catch塊中遇到return語句時,finally語句塊將在方法返回以前被執行。
 
在如下4中特殊狀況下,finally塊不會被執行:
1.在finally塊中發生了異常
2.在前面的代碼中用了System.exti()退出程序。
3.程序所在的線程死亡。
4.關閉CPU
相關文章
相關標籤/搜索