1、如何定义自己的异常
Java支持自己创建的异常。了解异常看这里:什么是java中的异常
方法如下:
1、所有的异常必须是Throwable 的子类。 2、如果想写一个检查异常,需要扩展Exception类 。 3、如果想编写一个运行时异常,则需要扩展RuntimeException类 。 4、异常类与任何其他类一样,可以包含字段 和方法 。 我们可以定义如下自己的异常处理类:
class MyException extends Exception{ }
例子:
import java.io.*; public class InsufficientFundsException extends Exception { private double amount; public InsufficientFundsException( double amount) { this .amount = amount; } public double getAmount() { return amount; } }
为了证明我们的使用用户定义的异常,下面的CheckingAccount类包含一个withdraw()方法抛出一个InsufficientFundsException。
import java.io.*; public class CheckingAccount { private double balance; private int number; public CheckingAccount( int number) { this .number = number; } public void deposit( double amount) { balance += amount; } public void withdraw( double amount) throws InsufficientFundsException { if (amount <= balance) { balance -= amount; } else { double needs = amount - balance; throw new InsufficientFundsException(needs); } } public double getBalance() { return balance; } public int getNumber() { return number; } }
下面BankDemo程序演示调用deposit()和withdraw() 方法。
public class BankDemo { public static void main(String [] args) { CheckingAccount c = new CheckingAccount( 101 ); System.out.println("Depositing $500..." ); c.deposit(500.00 ); try { System.out.println(" Withdrawing $100 ..."); c.withdraw(100.00 ); System.out.println(" Withdrawing $600 ..."); c.withdraw(600.00 ); }catch (InsufficientFundsException e) { System.out.println("Sorry, but you are short $" + e.getAmount()); e.printStackTrace(); } } }
编译所有上述三个文件并运行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)