異常處理(005)_如何自定義異常

1、如何定義自己的異常

Java支持自己創建的異常。瞭解異常看這裏:什麼是java中的異常

方法如下:

1、所有的異常必須是Throwable的子類。
2、如果想寫一個檢查異常,需要擴展Exception類
3、如果想編寫一個運行時異常,則需要擴展RuntimeException類
4、異常類與任何其他類一樣,可以包含字段方法
我們可以定義如下自己的異常處理類:
[java] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. class MyException extends Exception{  
  2. }  
例子:
[java] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. import java.io.*;  
  2.   
  3. public class InsufficientFundsException extends Exception  
  4. {  
  5. private double amount;  
  6. public InsufficientFundsException(double amount)  
  7. {  
  8. this.amount = amount;  
  9. }  
  10. public double getAmount()  
  11. {  
  12. return amount;  
  13. }  
  14. }  
爲了證明我們的使用用戶定義的異常,下面的CheckingAccount類包含一個withdraw()方法拋出一個InsufficientFundsException。
[java] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. import java.io.*;  
  2.   
  3. public class CheckingAccount  
  4. {  
  5. private double balance;  
  6. private int number;  
  7. public CheckingAccount(int number)  
  8. {  
  9. this.number = number;  
  10. }  
  11. public void deposit(double amount)  
  12. {  
  13. balance += amount;  
  14. }  
  15. public void withdraw(double amount) throws  
  16. InsufficientFundsException  
  17. {  
  18. if(amount <= balance)  
  19. {  
  20. balance -= amount;  
  21. }  
  22. else  
  23. {  
  24. double needs = amount - balance;  
  25. throw new InsufficientFundsException(needs);  
  26. }  
  27. }  
  28. public double getBalance()  
  29. {  
  30. return balance;  
  31. }  
  32. public int getNumber()  
  33. {  
  34. return number;  
  35. }  
  36. }  
下面BankDemo程序演示調用deposit()和withdraw() 方法。
[java] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. public class BankDemo  
  2. {  
  3. public static void main(String [] args)  
  4. {  
  5. CheckingAccount c = new CheckingAccount(101);  
  6. System.out.println("Depositing $500...");  
  7. c.deposit(500.00);  
  8. try  
  9. {  
  10. System.out.println("  
  11. Withdrawing $100...");  
  12. c.withdraw(100.00);  
  13. System.out.println("  
  14. Withdrawing $600...");  
  15. c.withdraw(600.00);  
  16. }catch(InsufficientFundsException e)  
  17. {  
  18. System.out.println("Sorry, but you are short $"  
  19. + e.getAmount());  
  20. e.printStackTrace();  
  21. }  
  22. }  
  23. }  
編譯所有上述三個文件並運行BankDemo,這將產生以下結果:
Depositing $500...

Withdrawing $100...

Withdrawing $600...
Sorry, but you are short $200.0
InsufficientFundsException
at CheckingAccount.withdraw(CheckingAccount.java:25)
at BankDemo.main(BankDemo.java:13)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章