【Java基础】07 异常

之前几节有相关代码的练习,但很显然,我们自己敲完代码,编译,运行,过程中会出现问题。
这节介绍java对这些问题的处理。
Java程序运行期间会出现错误,比如文件错误,网络错误,或者数据对象错误等。
java把异常当作对象处理。
继承自Throwable的Error和Exception。
Error是指运行期间严重错误,属于JVM层次的错误,不推荐捕获。
Exception表示可恢复的异常,编译器捕捉。分两类:
在这里插入图片描述
在这里插入图片描述

1.处理异常

try-catch以及try-catch-finally

try{
	//一些会抛出异常的方法
}catch(Exception1 e){
	//处理异常的代码块
}catch(Exception2 e){
	//。。。。。
}finally{
	//最终要执行的代码
}

使用多个catch块捕获不同异常,注意Exception(是父类)位置在最后
e.printStackTrace();打印异常具体信息
如果try、catch、finally中没有return语句,会执行之外的return
例子:
在这里插入图片描述

2.异常抛出

throw将产生的异常抛出,写在方法体内;
throws声明将要抛出何种异常;
如果某个方法调用到了会抛出异常的方法那么必须添加try-catch尝试捕获异常,或者添加throws声明将异常抛出给更上一层调用者去处理。

3.自定义异常

必须继承于java标准类库中意思相近的异常类型或直接继承Exception类
class 自定义异常类 extends 异常类型{………}

4.异常链

把捕获的异常包装成新的异常,在新的异常里添加对原始异常的引用,再抛出新异常。

5.关于异常经验

1.处理运行时异常时,采用逻辑去合理规避同时辅助trycatch处理
2.在多重catch后面可以加一个catch处理可能会被遗漏的异常
3.对于不确定代码,可以加上trycatch处理潜在异常
4.尽量处理异常,切忌只是简单调用printStackTrace()打印输出
5.具体如何处理异常,要根据不同也无需求和异常类型决定
6.尽量添加finally语句去释放占用的资源

练习bankException

银行收入支出异常判定
a. 自定义一个银行异常类bankException,抛出warning()

public class BankException extends Exception {
	String message;
	public BankException(int m, int n) {//异常方法
		message="入账资金"+m+"是负数"+n+"是正数不符合要求";
	}
	public String warning(){//异常信息输出
		return message;
	}
}

b. 在bank中写一个方法用来抛出异常

	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+=netIncome;
	}
	public int getMoney() {
		return money;
	}
	public void setMoney(int money) {
		this.money = money;
	}

c. 测试类

	public static void main(String[] args) {
		Bank bank=new Bank();
		try{bank.income(200, -100);
		bank.income(300, -100);
		System.out.printf("银行现有%d元\n",bank.money);
		bank.income(300, 100);
		}catch(BankException e){
			System.out.println(e.warning());//打印异常
		}
	}

PS:支付宝搜“654656370”领红包。

发布了23 篇原创文章 · 获赞 24 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41022866/article/details/96726209
今日推荐