java自定义异常类的编写

时间:2022-10-10 14:30:31 类型:JAVA
字号:    

在 Java 中你可以自定义异常, 所有异常都必须是 Throwable 的子类。

如果希望写一个检查性异常类,则需要继承 Exception 类。

如果你想写一个运行时异常类,那么需要继承 RuntimeException 类

  //自定义异常类,继承Exception类

public class MyException extends Exception{
    //此处的amount用来储存当出现异常(取出钱多于余额时)所缺乏的钱
    private double amount;
    public MyException(double amount)
    {
        this.amount = amount;
    }
    public double getAmount()
    {
        return amount;
    }
}

如何使用我们自定义的异常类,

在下面的 CheckingAccount 类中包含一个 withdraw() 方法抛出一个 MyException异常。

public class CheckingAccount {
    //balance为余额
    private double balance;
    //方法:存钱
    public void deposit(double amount)
    {
        balance += amount;
    }
    //方法:返回余额
    public double getBalance()
    {
        return balance;
    }
    //方法:取钱
    public void withdraw(double amount) throws MyException {
        if(amount <= balance)
        {
            balance -= amount;
        }
        else
        {
            double needs = amount - balance; //差的钱
            throw new MyException(needs);
        }
    }
}

  如何调用 CheckingAccount 类的 deposit() 和 withdraw() 方法

public class CheckAccountTest {
    public static void main(String[] args) {
        CheckingAccount checkingAccount = new CheckingAccount();
        checkingAccount.deposit(100);
        try {
            checkingAccount.withdraw(200);
        } catch (MyException e) {
            System.out.println("你的钱差" + e.getAmount());
            e.printStackTrace();
        }
    }
}
你的钱差100.0
com.zhuangzi.sbdemo.testClass.MyException
	at com.zhuangzi.sbdemo.testClass.CheckingAccount.withdraw(CheckingAccount.java:25)
	at com.zhuangzi.sbdemo.testClass.CheckAccountTest.main(CheckAccountTest.java:8)
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8


<