JAVA 自定义异常类

自定义异常类

    在编写程序时可以扩展Exception类定义自己的异常类,然后根据程序的需要来规定哪些方法产生这样的异常。个方法在声明时可使用throws关键宇声明要产生的若干个异常,并在该方法中具体给出产生异常的操作,即用相应的异常类创建对象,并使用throw关键字抛出异常对象,导致该方法结束执行。程序必须在try-catch块语句中调用可能发生异常的方法,其中catch的作用就是捕获throw关键字抛出的异常对象。

    注:throw是Java的关键字,改关键字的作用就是抛出异常。throw和throws是两个不同的关键字。

    通常情况下,计算两个整数之和的方法不应当有任何异常发生,但是,对某些特殊应用程序,可能不允许同号的整数做求和运算,比如当一个整数代表收入,一个整数代表支出时,这两个整数就不能是同号,下面的例子中,Bank类中有个income(int in,int out)方法,对象调用该方法时,必须向参数in传递正整数,向参数out传递负数,并int+out必须大于等于0,否则该方法就抛出异常。因此,Bank类在声明income(int in,int ou)方法时,使用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元

猜你喜欢

转载自blog.csdn.net/abc1498880402/article/details/80626402