为什么要引用自定义异常呢?
当Java提供的内置异常不能满足程序需要的时候,那就需要自定义异常
![](https://i-blog.csdnimg.cn/blog_migrate/95a6c54f996ed07593b631baadeb28c3.png)
![](https://i-blog.csdnimg.cn/blog_migrate/889980db0c048bb904b00c2bfe57b460.png)
![](https://i-blog.csdnimg.cn/blog_migrate/14280d07af02329920986ebd85c8643a.png)
实例:
自定义一个异常,当人数为负数的时候抛出异常
package yiChang;
//保证人数不能是负数,否则抛出异常
public class RenShu {
public static void main(String[] args) {
RenShu rs = new RenShu();//创建对象,方便调用
try {
rs.register(-8);
} catch (MyException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();//注意:⚠️这个地方只能用这种输出方式,否则看不到自定义的报错信息。
}
}
public void register (int num) throws MyException{//抛出自己定义的异常
if(num<0)
throw new MyException("---注意:人数不能够小于0哦---");
else
System.out.println("登记人数为:"+num);
}
}
class MyException extends Exception{//自定义一个异常
MyException(String message){
super(message);//调用父类Exception的构造方法(Exception类的构造方法是由系统自动给出的)(也有相应的get、set方法)
}
}
异常处理银行管理系统
存款的时候是不会发生异常的,有可能发生异常的地方就是取钱的时候,当取钱的金额大于银行卡中的余额的时候就会出现异常
package jiCheng_duoTai;
//注意:对于异常的语句抛出的话不能直接写在类中,应该写到函数里面
public class YinHangGuanLiXiTong_YiChang {
public static void main(String[] args) throws MyException {//这里处理取钱的异常是抛出,当然也可以用try-catch-finally语句块处理异常
count cc = new count(101,"李小白",5800);
System.out.println(cc.toString());
cc.save(200);//存钱
System.out.println("存款成功,所剩余额为:"+cc.getBouns());
cc.quMoney(5000);//取钱
System.out.println("取款成功,所剩余额为:"+cc.getBouns());
cc.quMoney(2000);//取钱
System.out.println("取款成功,所剩余额为:"+cc.getBouns());
}
}
class count{
private int id;
private String name;
private double bouns;
public count() {}
public count(int id, String name, double bouns) {
this.id = id;
this.name = name;
this.bouns = bouns;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getBouns() {
return bouns;
}
public void setBouns(double bouns) {
this.bouns = bouns;
}
public double save(double money) {
return bouns=bouns+money;
}
//注意:取款时有可能发生异常,因为Java不是什么异常都包含,所以自己定义一个异常
public double quMoney(double money) throws MyException {//同时要抛出自己定义的异常
if(bouns<money)
throw new MyException("余额不足,提取失败");
//此处的else可以省略的,因为抛出异常的时候后面的语句不会执行
return bouns=bouns-money;
}
public String toString(){
return name+" "+id+" "+bouns;
}
}
class MyException extends Exception{
public MyException(String s) {
super(s);//注意:继承了异常类,就可以调用异常类的构造方法
}
}