当前位置: 代码迷 >> J2EE >> 自定义错误_公交刷卡
  详细解决方案

自定义错误_公交刷卡

热度:27   发布时间:2016-04-22 01:20:19.0
自定义异常_公交刷卡
2. 自定义异常
要求:乘坐公交车刷卡操作。定义公交卡类,若刷卡金额大于余额,则作为异常处理。
步骤:
(1)产生异常的条件是余额少于刷卡金额,是否抛出异常要先对该条件做判断,确定产生异常的方法,在刷卡方法中产生异常。
(2)处理异常安排在调用刷卡方法中,刷卡方法抛出异常,由上一级调用方法捕获并处理。
(3)定义异常。
package ex_7_5;
class buscard{
String name;
double balance;
buscard(String name,double balance){
this.name=name;
this.balance=balance;
}
}
class MyException extends Exception{
private String myString;
public MyException(String myString){
this.myString=myString;
}
public String getMyString(){
return myString;
}
@Override
public String toString(){
return myString;
}
}
public class ex_7_5 {
public static double slotcard(double x,buscard A)throws MyException{
if(A.balance-x<0)
throw new MyException("余额不足!刷卡失败!");
else
return A.balance-x;
}
public static void main(String[] args){
buscard A=new buscard("Chen",0.5);//测试用到:0.5,1
double x;
x=1;
try{
A.balance=slotcard(x,A);
System.out.println("刷卡成功!余额为:"+A.balance);
}catch(MyException e){
System.out.println("!");
}
}
}
程序存在一些问题,望高手帮帮忙。
附:为什么这样输出的异常是“!”却不是("余额不足!刷卡失败!")

------解决方案--------------------
Java code
把System.out.println("!");改为:e.printStackTrace();
------解决方案--------------------
或者改成
System.out.println(e.getMyString());
------解决方案--------------------
Java code
    public static void main(String[] args) {        buscard A = new buscard("Chen", 0.5);// 测试用到:0.5,1        double x = 1;        try {            A.balance = slotcard(x, A);            System.out.println("刷卡成功!余额为:" + A.balance);        } catch (MyException e) {            System.out.println("!");        }    }
------解决方案--------------------
探讨
Java code

把System.out.println("!");改为:
e.printStackTrace();



这样就可以了
  相关解决方案