7.3 异常类

异常类:程序运行时可能会出现的一些错误,比如试图打开一个根本不存在的文件等,异常处理将会改变程序的控制流程,让程序有机会对错误进行处理

(1)Java用throw关键字抛出Exception子类的实例表示异常发生。

(2)Java允许定义方法的时候声明该方法调用过程中可能出现的异常,即允许方法调用过程中抛出异常对象,终止当前方法的继续执行

//抛出异常
NumberFormatException(格式转换异常)
IOException(读取文件异常)

//异常对象可以调用以下方法得到或者输出有关异常的信息
public String getMessage();
public void printStackTrace();
public String toString();

7.3.1 try-catch 语句

Java使用try-catch语句来处理异常,将可能出现的异常操作放在try-catch语句的try部分,一旦try部分抛出异常对象,或者调用某个可能抛出异常对象的方法,并且该方法抛出了异常,那么try部分立即结束执行,转向执行catch部分。

//try-catch语句格式
try{
包含可能发生异常的语句
}
catch(ExceptionSubClass1 e){
···
}
catch(ExceptionSubClassS2 e){
···
}


public class Example7_4 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
int n=0;
int t=1000;
try {
//	m=Integer.parseInt("8888");
	n=Integer.parseInt("ab89");
//	t =777;//t没有机会被赋值
}catch (NumberFormatException e) {
	// TODO: handle exception
	System.out.println("发生异常:"+e.getMessage());
}
	}

}//输出结果:发生异常:For input string: "ab89"


7.3.2 自定义异常类

(1)在编写程序的时候可以扩展Exception类定义自己的异常类,然后根据程序的需求来规定哪些方法产生这样的异常

注意:throw和throws是不同两个关键字


//自定义异常类
public class Example7_5_BankException extends Exception {
	/**
	 * 自定义异常类
		 * */
	private static final long serialVersionUID = 446574521862455830L;
	String message;

	public Example7_5_BankException(int m, int n) {
		message = "入账资金" + m + "是负数或者支出" + n + "是正数,不符合系统要求";
	}

	public String warnMess() {
		return message;

	}

}


public class Example7_5_Bank {
	private int money;

	public void income(int in, int out) throws Example7_5_BankException {
		if (in <= 0 || out >= 0 || in + out <= 0) {
			throw new Example7_5_BankException(in, out);// 方法抛出异常,导致方法结束
		}
		int netIncome = in + out;
		System.out.printf("本次计算的纯收入是:%d元\n", netIncome);
		money = money + netIncome;
	}
	public int getMoney() {
		return money;
	}
}

public class Example7_5 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Example7_5_Bank bank = new Example7_5_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(9999, -100);
		} catch (Example7_5_BankException e) {
			// TODO: handle exception
			System.out.printf("计算收益过程中遇到如下问题:");
			System.out.printf(e.warnMess());
			System.out.printf("银行目前有%d元\n", bank.getMoney());
		}
		
	}
}

/*输出结果:
本次计算的纯收入是:100元
本次计算的纯收入是:200元
本次计算的纯收入是:300元
银行目前有600元
本次计算的纯收入是:100元
本次计算的纯收入是:9899元
*/
















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值