自定义异常类
在编撰程序时可以扩充Exception类定义自己的异常类,然后按照程序的须要来规定什么方式形成这样的异常。个方式在申明时可使用throws关键宇声明要形成的若干个异常,并在该方式中具体给出形成异常的操作,即用相应的异常类创建对象,并使用throw关键字抛出异常对象,导致该方式结束执行。程序必须在try-catch块句子中调用可能发生异常的方式,其中catch的作用就是捕获throw关键字抛出的异常对象。
注:throw是Java的关键字,改关键字的作用就是抛出异常。throw和throws是两个不同的关键字。
通常情况下,计算两个整数之和的方式不应该有任何异常发生,但是,对个别特殊应用程序,可能不容许同号的整数做求和运算,比如当一个整数代表收入,一个整数代表总额时,这两个整数就不能是同号,下面的事例中,Bank类中有个income(int in,int out)方法,对象调用该方式时,必须向参数in传递正整数,向参数out传递正数,并int+out必须小于等于0,否则该技巧就抛出异常。因此,Bank类在申明income(intin,intou)方法时,使用throws关键字申明要形成的异常。程序运行疗效如下所示。
class BankException extends Exception{
String message;
public BankException(int m,int n) {
message="入账资金"+"m"+"是负数或支出"+n+"是正数,不符合系统要求。";
}
public String warnMess() {
return message;
}
}
class Bank{
private int money;
public void income(int in,int out) throws BankException{
if( in<=0 || out>=0 || in+out<=0 )
throw new BankException(in,out); //方法抛出异常类,导致方法结束
int netIncome=in+out;
System.out.printf("本次计算出的纯收入是:%d元\n",netIncome);
money=money+netIncome;
}
public int getMoney() {
return money;
}
}
public class Hello {
public static void main(String[] args) {
Bank bank=new Bank();
try {
bank.income(200, -100);
bank.income(300, -100);
bank.income(400, -100);
System.out.printf("银行目前有%d元\n",bank.getMoney());
bank.income(200, 100);
bank.income(99999, -100);
}
catch(BankException e) {
System.out.println("计算收益的过程出现如下问题:");
System.out.println(e.warnMess());
}
System.out.printf("银行目前有%d元\n",bank.getMoney());
}
}
本次估算出的纯收入是:100元
本次估算出的纯收入是:200元
本次估算出的纯收入是:300元
银行目前有600元
计算利润的过程出现如下问题:
入账资金m是正数或总额100是负数,不符合系统要求。
银行目前有600元