在 Java 中你可以自定義異常, 所有異常都必須是 Throwable 的子類(lèi)。
如果希望寫(xiě)一個(gè)檢查性異常類(lèi),則需要繼承 Exception 類(lèi)。
如果你想寫(xiě)一個(gè)運(yùn)行時(shí)異常類(lèi),那么需要繼承 RuntimeException 類(lèi)
//自定義異常類(lèi),繼承Exception類(lèi)
public class MyException extends Exception{ //此處的amount用來(lái)儲(chǔ)存當(dāng)出現(xiàn)異常(取出錢(qián)多于余額時(shí))所缺乏的錢(qián) private double amount; public MyException(double amount) { this.amount = amount; } public double getAmount() { return amount; } }
如何使用我們自定義的異常類(lèi),
在下面的 CheckingAccount 類(lèi)中包含一個(gè) withdraw() 方法拋出一個(gè) MyException異常。
public class CheckingAccount { //balance為余額 private double balance; //方法:存錢(qián) public void deposit(double amount) { balance += amount; } //方法:返回余額 public double getBalance() { return balance; } //方法:取錢(qián) public void withdraw(double amount) throws MyException { if(amount <= balance) { balance -= amount; } else { double needs = amount - balance; //差的錢(qián) throw new MyException(needs); } } }
如何調(diào)用 CheckingAccount 類(lèi)的 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("你的錢(qián)差" + e.getAmount()); e.printStackTrace(); } } }
你的錢(qián)差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