[軟體構造]異常的捕獲與自定義
阿新 • • 發佈:2021-07-09
lab3相關
目錄
JAVA中異常的分類
異常的根介面Throwable,其下有2個子介面,Error和Exception。
Error:指的是JVM錯誤,這時的程式並沒有執行,無法處理。與程式碼無關,程式設計師通常無能為力,一旦發生,想辦法讓程式優雅的結束。也可以通過對外部環境的配置解決問題,如使用者輸入錯誤、裝置錯誤、物理限制等。
Exception:指的是程式執行中產生的異常,可以使用處理格式處理。
JAVA中異常的關鍵字
Java異常機制用到的關鍵字:try、catch、finally、throw、throws。
try -- 用於監聽。將要被監聽的程式碼,即可能丟擲異常的程式碼,放在try語句塊之內。當try語句塊內發生異常時,異常就被丟擲。
catch -- 用於捕獲異常。catch用來捕獲try語句塊中發生的異常。
finally -- 無論是否捕捉到異常,無論try和catch中有無return語句,finally語句塊總是會被執行。它主要用於回收在try塊裡開啟的物力資源(比如在try中開啟檔案進行讀取,則要在finally中關閉檔案)。
throw -- 用於丟擲異常。
throws -- 用在方法宣告中,用於宣告該方法可能丟擲的異常。
異常的處理方案
try{ /*可能會發生的異常的語句*/ } catch(異常型別 異常名(變數)){ /*針對異常進行處理的程式碼*/ } catch(異常型別 異常名(變數)){ /*針對異常進行處理的程式碼*/ }/*如果有多個異常,則新增多個catch語句進行捕獲*/ finally{ /*釋放資原始碼*/ }
一些注意點:
1.finally語句可以省略不寫
2.try, catch, finally塊之間不能新增任何程式碼。
3.異常如果是同級關係,catch誰前誰後沒有關係;如果異常之間存在上下級關係,上級需要放在後面
自定義異常
public class XxxException extends Exception { /*無參建構函式*/ public XxxException(){ super(); } /*用詳細資訊指定一個異常,Throwable類中的getMessage()方法就是用來返回異常的詳細資訊的*/ public XxxException(String message){ super(message); } /*用指定原因構造一個新的異常,Throwable類中的getCause()方法就是用來返回異常的原因的*/ public XxxException(Throwable cause) { super(cause); } /*用指定的詳細資訊和原因構造一個新的異常*/ public XxxException(String message, Throwable cause){ super(message,cause); } }