异常机制Exception
Error类对象由Java虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关。
我们在编写程序时,不要害怕看到报错报红,当我们看到报红的时候,往往是我们进行学习的时候,去解决掉这个异常,把它记录下来,我们才算真正的学会这个知识。
学习怎样捕获异常
异常处理五个关键字:try、catch、finally、throw、throws
快捷键:选中当前代码 Country Alt+T (macOS系统快捷键是command+option+T)在弹出框中选try.catch.finally
public class test {
public static void main(String[] args) {
int a = 1;
int b = 0;
try {//这里面的是监控区域
System.out.println(a/b);
} catch (Exception e) {//catch捕获异常,(括号里面是捕获的类型)
System.out.println("程序出现异常");
} finally {//处理善后工作,这里面的代码终究会执行
}
}
}
catch自动生成时会自动生成一句代码:printStackTrace()->意思是打印栈错误信息
可以捕获多个异常:多个catch(),但是要注意优先级从小到大去捕获。详细异常体系结构看下图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ge3TRRA3-1682925977522)(/Users/xiexinming/Library/Application Support/typora-user-images/截屏2023-05-01 14.55.15.png)]
主动抛出异常:假设这个方法中(throw),处理不了这个异常,那就在方法上(throws)抛出异常
public static void main(String[] args){
try{
new Test().test(1,0);
}catch(ArithmeticException e){
e.printStackTrace();
}
}
public void test(int a,int b)throws ArithmeticException{
if(b==0){
throw new ArithmeticException();//主动抛出的异常,一般在方法中使用,
}
}
实际应用中的经验总结
- 处理运行异常时,采用逻辑去合理规避同时辅助try-catch处理
- 在多重catch块后面 ,可以加一个catch(Exception)大的 来处理 可能会被遗漏的异常
- 对于不确定的代码,也可以加上try- catch,处理潜在的异常
- 尽量添加finally语句块去释放占用的资源
以上学习资源均来自kuangshen