java學習之自定義異常


因為項目中會出現特有的問題,而這些問題並未被java所描述並封裝對象,所以對於這些特有的問題可以按照java的對問題封裝的思想,將特有的問題,進行自定義的異常封裝。

自定義異常:

需求:在本程序中,對於除數時-1,也視為u是錯誤的是無法進行運算的,那么就需要對這個問題進行自定義的描述。

當在函數內部出現了throw拋出異常對象,那么必須要給對應的處理動作:

要么在內部try catch處理,要么在函數上聲明讓調用者處理。

一般情況下,函數內出現異常,函數上需要聲明。

發現打印結果中只有異常的名稱,卻沒有異常的信息:

因為自定義的異常並未定義信息。

如何定義異常信息呢?

因為父類中已經把異常信息的操作都完成了。所以子類只要在構造時,將異常信息傳遞給父類通過super語句,那么就可以直接通過getMessage方法獲取自定義的異常信息。

 

自定義異常:

  必須是自定義類繼承Exception

繼承Exception原因:

  異常體系有一個特點:因為異常類和異常對象都被拋出。他們都具備可拋性,這個可拋性是Throwable這個體系中獨有特點。只有這個體系中的類和對象才可以被throws和throw操作

package com.dreamy.day04;

/**
 * @author dreamy
 * 需求:在本程序中,對於除數時-1,也視為u是錯誤的是無法進行運算的,
 *    那么就需要對這個問題進行自定義的描述。
 */
/*class Throwable{
    private String message;
    public Throwable(String message) {
        this.message=message;
    }
    public String getMessage() {
        return message;
    }
}
class Exception extends Throwable{
    public Exception(String message) {
        super(message);
    }
}*/
class FuShuException extends Exception {//getMessage();
    private int value;
    public FuShuException() {
        super();
    }
    public FuShuException(String msg,int value) {
        super(msg);
        this.value=value;
    }
    public int getValue() {
        return value;
    }
    
    
}
class Demo02{
    int div(int a,int b) throws FuShuException{
        if(b<0) {
            throw new FuShuException("出現了除數是負數的情況",b);//手動通過throw關鍵字拋出一個自定義異常對象。
        }
        return a/b;
    }
}
public class ExceptionDemo02 {
    public static void main(String[] args) {
        Demo02 d=new Demo02();
        try {
            int x=d.div(4, -1);
            System.out.println("x:"+x);
        }catch (FuShuException e) {
            System.out.println(e.toString());
//            System.out.println("除數出現負數了");
            System.out.println("錯誤的負是:"+e.getValue());
        }
        System.out.println("over");
    }
}

 


免責聲明!

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



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