java異常你瞭解多少

hello_future發表於2024-08-15

一、知識點概述

(1)異常:異常就是Java程式在執行過程中出現的錯誤。

(2)異常由來:問題也是現實生活中一個具體事務,也可以透過java 的類的形式進行描述,並封裝成物件。其實就是Java對不正常情況進行描述後的物件體現。

(3)JVM的預設處理方案

把異常的名稱,錯誤原因及異常出現的位置等資訊輸出在了控制檯
程式停止執行

(4)異常處理方案

4.1 try…catch…finally

try{
可能會出錯的程式碼;
}catch(異常類 引數){
處理的方案邏輯;
}finally{
釋放資源的程式碼
};

4.1.1 try..catch..注意事項:

    1、try中定義變數作用域就在try種使用
    2、若try中程式碼沒有異常,是不會匹配catch的
    3、catch若沒有try出現的異常型別的話,就會使用java預設處理異常方案
    4、catch可以寫多個,也可寫一個,但是若多個catch存在繼承關係的話,將父親放在兒子的後面
    5、若使用jdk1.8新特性寫法,使用一個catch接收多個異常類的話,不允許出現父子關係異常

4.2 throws

(5)Java中的異常被分為兩大類:編譯時異常和執行時異常。所有的RuntimeException類及其子類的例項被稱為執行時異常,其他的異常就是編譯時異常

5.1編譯時異常

Java程式必須顯示處理,否則程式就會發生錯誤,無法透過編譯

5.2執行時異常

無需顯示處理,也可以和編譯時異常一樣處理

(6)finally的特點

被finally控制的語句體一定會執行
特殊情況:在執行到finally之前jvm退出了(比如System.exit(0))

(7)finally的作用

無論try中的程式碼是否出現問題,這裡的程式碼都會執行
一般情況下,finally裡面寫釋放資源的程式碼,在IO流操作和資料庫操作中會見到

(8)如果catch裡面有return語句,請問finally的程式碼還會執行嗎?如果會,請問是在return前還是return後。

會,會在return前執行,因為finally用法特殊,所以會撤銷之前的return語句,繼續執行最後的finally塊中的程式碼。

(9)Throwable中的方法

getMessage()
獲取異常資訊,返回字串。
toString()
獲取異常類名和異常資訊,返回字串。
printStackTrace()  、//比較常用
獲取異常類名和異常資訊,以及異常出現在程式中的位置。返回值void。
printStackTrace(PrintStream s)
通常用該方法將異常內容儲存在日誌檔案中,以便查閱。

(10)throws

定義功能方法時,需要把出現的問題暴露出來讓呼叫者去處理。那麼就透過throws在方法上標識。
舉例分別演示編譯時異常和執行時異常的丟擲

(11)throw和throws的區別

throws
用在方法宣告後面,跟的是異常類名
可以跟多個異常類名,用逗號隔開
表示丟擲異常,由該方法的呼叫者來處理
throws表示出現異常的一種可能性,並不一定會發生這些異常
throw
用在方法體內,跟的是異常物件名
只能丟擲一個異常物件名
表示丟擲異常,由方法體內的語句處理
throw則是丟擲了異常,執行throw則一定丟擲了某種異常

(12)我們到底該如何處理異常呢

原則:如果該功能內部可以將問題處理,用try,如果處理不了,交由呼叫者處理,這是用throws
區別:
後續程式需要繼續執行就try
後續程式不需要繼續執行就throws

相關文章