Java異常處理

目錄

一、Throwable 類

二、Error (錯誤)

三、Exception(異常)

四、異常處理方法1——拋出異常(throw,throws的區別)

五、異常處理方法2——捕獲異常(try...catch...finally...)


 

 

一、Throwable 類

  1. Throwable 是所有的異常的祖先;
  2. Throwable的兩個重要子類:Exception(異常) 和 Error(錯誤);
  3. Throwable類的常用方法:
    ①getMessage() :返回異常發生時的詳細處理。
    ②toString() :返回異常發生時的簡要描述。
    ③getLocalizedMessage() :返回異常對象的本地化信息;使用Throwable的子類覆蓋這個方法,可
                                                以聲稱本地化信息。如果子類沒有覆蓋該方法,則該方法返回的信息與
                                                getMessage() 返回的結果相同。
    ④printStackTrace() :在控制檯上打印Throwable對象封裝的異常信息。

 

二、Error (錯誤)

Error是代碼運行時系統的內部錯誤和資源耗盡錯誤,是程序無法處理的錯誤;

如 Java虛擬機運行錯誤(VirtualMachineError)、類定義錯誤(NoClassDefFoundError) 等,這些錯誤是不可查的,因爲它們在應用程序的控制和處理能力之 外,而且絕大多數是程序運行時不允許出現的狀況。對於設計合理的應用程序來說,即使確實發生了這樣的錯誤,本質上也不應該試圖去處理它們所引起的異常狀況。

 

三、Exception(異常)

Exception是程序本身可以處理的異常。

Exception的一個重要子類:RuntimeException (運行時異常)。

RuntimeException異常由Java虛擬機拋出,如:空指針異常,數組越界異常,算術異常(如除數爲0) 等。

 

PS :異常與錯誤的區別在於,異常能被程序本身處理,而程序是無法處理錯誤的。

 

四、異常處理方法1——拋出異常(throw,throws的區別)

拋出異常:一個方法不處理這個異常,而且繼續將問題拋給調用者來處理,使用 throw 和 throws 。

throw 和 throws 的區別:

  1. 使用位置不同:
    throw 用在方法內,後面跟的是異常對象;
    throws 用在方法上,後面跟的是異常類(多個類型可用逗號隔開)。
  2. 功能不同:
    throws是用來聲明可能發生的異常,並可給出預先的處理方法;
    throw是拋出具體的異常,執行了throw之後會跳轉到方法調用者,並將異常拋給調用者。
    (所以 如果throw語句獨立存在時,後面就不要再定義其他語句了,因爲執行不到後面。)
  3. throws 只是表示可能會出現某種異常,但不一定會出現這些異常;
    throw 是直接拋出了異常,所以如果執行了throw語句,那麼一定會拋出異常;
  4. throws 和 throw 都是消極處理異常的方式,其實它們並沒有去處理異常,而是將異常向上拋出,交由上層調用處理;

 

 

五、異常處理方法2——捕獲異常(try...catch...finally...)

 

  1. tyr 塊:用於捕獲異常;其後可接零個或多個catch塊,如果沒有catch塊,則必須跟一個finally塊。
  2. catch 塊:用於處理try捕獲到的異常。
  3. finally 塊:無論前面是否捕獲了或處理了異常,finally塊裏的語句最後都會被執行;
                      當在try塊或catch塊中遇到return語句時,finally塊裏的語句會在方法返回之前被執行。
  4. finally塊不會被執行的4種特殊情況:
    ①在finally語句塊中發生了異常;
    ②在前面的代碼中使用了System.exit()退出程序;
    ③程序所在的線程死亡了;
    ④關閉了CPU。

 

發佈了91 篇原創文章 · 獲贊 35 · 訪問量 6816
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章