1. 程式人生 > 其它 >[軟體構造]異常的捕獲與自定義

[軟體構造]異常的捕獲與自定義

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);
    }  
}