Java異常機制
Hanyta發表於2024-04-30
- 異常的根介面是Throwable,其下分為兩大類:Error和Exception
- Error通常是致命的錯誤,是程式無法控制和處理的,當出現這些異常時,JVM一般會選擇終止執行緒;Exception通常情況下是可以被程式處理的,並且在程式中應該儘可能的去處理這些異常
- 異常處理機制:讓程式在異常發生時,按照程式碼的預先設定的異常處理邏輯,針對性地處理異常,讓程式盡最大可能恢復正常並繼續執行,且保持程式碼的清晰
- 異常機制中用到的幾個關鍵字:try,catch,finally,throw,throws
- try – 用於監聽。將要被監聽的程式碼(可能丟擲異常的程式碼)放在try語句塊之內,當try語句塊內發生異常時,異常就被丟擲。
- catch – 用於捕獲異常。catch用來捕獲try語句塊中發生的異常。
- finally – finally語句塊總是會被執行。它主要用於回收在try塊裡開啟的資源(如資料庫連線、網路連線和磁碟檔案)。
只有finally塊執行完成之後,才會回來執行try或者catch塊中的return或者throw語句,如果finally中使用了return或者throw等終止方法的語句,則就不會跳回執行,直接停止。
- throw – 用於丟擲異常。
- throws – 用在方法上,用於宣告該方法可能丟擲的異常。主方法上也可以使用throws丟擲。
如果在主方法上使用了throws丟擲,就表示在主方法裡面可以不用強制性進行異常處理,如果出現了異常,就交給JVM進行預設處理,則此時會導致程式中斷執行。
- 自定義異常
- 自定義異常應該繼承Exception或RuntimeException類;
- 在丟擲異常時,應該使用throw關鍵字,且要提供有意義的異常資訊;
- 處理異常時,應該使用try-catch語句塊;
- 自定義異常類要遵循Java程式設計規範;