在 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