Java异常处理机制
在我们搭建项目时,会见识到很多的异常报错,包括我们需要手动添加的异常,让我们来认识它们吧!
Java异常处理机制:可以让程序具有极好的容错性,让程序更加健壮。当程序运行出现意外情形时,系统会自动生成一个 Exception对象来通知程序,从而实现将“业务功能实现代码”和“错误处理代码”分离,提供更好的可读性
根据下面的导图我们更能清晰的看出其架构:
try…catch语法格式:抛出异常,捕捉异常,处理异常。
try {
//业务功能代码
} catch(异常类1 e1) {
//异常处理代码1
}
...
catch(异常类n en) {
//异常处理代码n
}
在使用try…catch捕获处理异常时需要注意:
- 不要过度使用异常,不能使用异常处理机制来代替正常的流程控制语句
- 异常捕获时,一定要先捕获小异常,再捕获大异常。否则小异常将无法被捕获
- 避免出现庞大的try块
- 避免使用catch(Exception e){}
- 不要忽略异常
认识了try…catch自然不能少了finally
finally块一般用来关闭物理资源(数据库连接,网络连接,磁盘文件等),这些物理资源必须显式关 闭。除非在try块、catch块中调用了退出虚拟机的方法( System.exit(0); ),否则不管在try块、catch块中执行怎样的代码,出现怎样的情况,异常处理的finally块一定会被执行
try{
}cath(异常类1 e1 | 异常类1 e1){
}finally{
}
例:try {
int a=1;
int b=0;
int c=a/b;
System.out.println("执行a/b");
} catch (ArithmeticException e) {
e.printStackTrace();
int a=1;
int b=0;
int c=a/b;
System.err.println("错误");
} finally {
//一定会执行
System.out.println("关闭资源(数据库连接)");
}
自定义异常类:是我们项目不可缺少的手动添加的异常
项目中指定一个全局使用的类,在里面写入我们需要的自定义异常
public class MyException extends Exception{
public MyException(String message){
super(message);
}
}
需要使用时直接 throw new MyException(“该数据不能删除”);