自定义的异常类一般步骤:
1.自定义异常类要继承于Exception类或其子类,或其它异常类。
2.为自定义异常类声明字段(属性)成员、方法成员或重写父类的字段和方法。
3.自定义异常类至少要定义两个构造方法:一个是无参的;另外一个是带 String参数的,目的是将此字符串传递给父构造方法,同时这个String的 信息作为该异常对象的描述信息。
4.最后,起一个能标识异常情况的有意义的名字。
示例代码:
代码中先创建了一个MeiQianException来继承异常类,在里面实现出现异常的时候调用的方法,并且这个方法需要传递进参数。super在方法中的作用是当出现这个异常的时候控制台打印的信息。
throws觉得抛出的是哪种异常,throw抛出异常对象。
public class MeiQianException extends Exception{
// 代表取钱的时候还差多少钱
private Double money;
public MeiQianException(Double money) {
// super里面的字符串,代表当跑出这个异常的时候打印的异常信息
super("余额不足还差: " + money);
this.money = money;
}
public class AccountAdmin {
// 余额 (当前账号还有多少钱)
private Double balance;
public AccountAdmin(Double balance) {
this.balance = balance;
}
// 存钱
public void deposit(double money) {
balance += money;
}
// 取钱
public void withdraw(double money) throws MeiQianException {
if (balance >= money) {
balance -= money;
} else {
double needMoney = money - balance;
// 当取钱余额不足的时候,给调用者抛出一个异常,而且这个异常
// 是编译时异常,需要取钱调用这个方法的人必须要未雨绸缪处理
throw new MeiQianException(needMoney);
}
}
public static void main(String[] args) {
AccountAdmin accountAdmin = new AccountAdmin(30000.0);
accountAdmin.deposit(200);
try {
accountAdmin.withdraw(40000.0);
} catch (MeiQianException e) {
e.printStackTrace();
} finally {
System.out.println("finally");
}
System.out.println("AccountAdmin.main");
}
}