爲什麼要引用自定義異常呢?
當Java提供的內置異常不能滿足程序需要的時候,那就需要自定義異常
實例:
自定義一個異常,當人數爲負數的時候拋出異常
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);//注意:繼承了異常類,就可以調用異常類的構造方法
}
}