java基礎之自定義異常類及throw和throws的區別


一、異常的架構:

 

Throwable類:所以異常類都是Throwable的子類,它派生兩個子類 Error和Exception。

Error類:表示僅靠程序本身無法恢復的的嚴重錯誤,比如內存溢出,虛擬機錯誤等,這些異常除了盡力使程序安全退出外,我們並沒有辦法去解決,所以開發的時候我們更應該關注的是Exception

Exception類:由java應用程序拋出和處理的非嚴重錯誤,如文件找不到,網絡連接中斷,數組下標越界等,它的不同的子類分別對應不同類型的異常

運行時異常:包括RuntimeException類及其子類,不要求程序員必須對它們做出處理,如果程序發生運行時異常,而我們並沒有處理,會輸出異常的堆棧信息,並終止程序運行

Checked異常(非運行時異常):除了運行時異常外的其他由Exception繼承來的異常類,程序必須捕獲或者聲明拋出這種異常。否則程序無法編譯通過,如如IOException、SQLException等異常

二、自定義異常的步驟:

當JDK提供的異常類型不能滿足程序的需求時,我們可以自定義異常

1.定義一個普通類,並繼承exception或RuntimeExceprion,繼承Exceprtion的自定義異常為Checked異常(必須拋出或者try cacth),繼承自RuntimeExceprion的自定義異常類為運行時異常

2.編寫異常類的構造方法,並繼承父類實現,常見的如下:

/**
 * 自定義異常類
 */
public class MyException extends Exception {
    public MyException() {
    }

    public MyException(String message) {
        super(message);
    }

    /**
     * 
     * @param message 需要顯示的異常信息
     * @param cause 為Throwable或其子類的實例
     */
    public MyException(String message, Throwable cause) {
        super(message, cause);
    }

    public MyException(Throwable cause) {
        super(cause);
    }
}
繼承自Exception的自定義異常類
    @Test
    public void getMessage() throws Exception {
        try {
            int a=  10/0;
        } catch (Exception e) {
            throw  new MyException("10不能除以0");
        }
    }
繼承自Exception的異常類的測試

 

除了繼承自Exception還可以繼承RuntimeException,具體例子就不往下寫了

 三、throw和throws的區別

主要區別有以下三點:

1、作用不同:throw用於在程序中拋出異常;throws用於在該方法內拋出了異常;

2、使用的位置不同:throw位於方法體內,可以作為單獨語句使用;throws必須跟在方法參數列表的后面,不能單獨使用;

3、內容不容:throw拋出一個異常對象,而且只能是一個;throws后面跟異常類,而且可以跟多個異常類

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM