目錄
四、異常處理方法1——拋出異常(throw,throws的區別)
五、異常處理方法2——捕獲異常(try...catch...finally...)
一、Throwable 類
- Throwable 是所有的異常的祖先;
- Throwable的兩個重要子類:Exception(異常) 和 Error(錯誤);
- 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 的區別:
- 使用位置不同:
throw 用在方法內,後面跟的是異常對象;
throws 用在方法上,後面跟的是異常類(多個類型可用逗號隔開)。 - 功能不同:
throws是用來聲明可能發生的異常,並可給出預先的處理方法;
throw是拋出具體的異常,執行了throw之後會跳轉到方法調用者,並將異常拋給調用者。
(所以 如果throw語句獨立存在時,後面就不要再定義其他語句了,因爲執行不到後面。) - throws 只是表示可能會出現某種異常,但不一定會出現這些異常;
throw 是直接拋出了異常,所以如果執行了throw語句,那麼一定會拋出異常; - throws 和 throw 都是消極處理異常的方式,其實它們並沒有去處理異常,而是將異常向上拋出,交由上層調用處理;
五、異常處理方法2——捕獲異常(try...catch...finally...)
- tyr 塊:用於捕獲異常;其後可接零個或多個catch塊,如果沒有catch塊,則必須跟一個finally塊。
- catch 塊:用於處理try捕獲到的異常。
- finally 塊:無論前面是否捕獲了或處理了異常,finally塊裏的語句最後都會被執行;
當在try塊或catch塊中遇到return語句時,finally塊裏的語句會在方法返回之前被執行。 - finally塊不會被執行的4種特殊情況:
①在finally語句塊中發生了異常;
②在前面的代碼中使用了System.exit()退出程序;
③程序所在的線程死亡了;
④關閉了CPU。