异常
错误:Error
由java虚拟机生成抛出,大多数错误与代码编写者所执行的操作无关
异常:Exception
捕获和抛出异常
- 用try监控异常代码,捕获;
- 用catch,选择异常类型;
- try 和 catch必须要有,finally可以不要
- 用finally善后结束,关闭
- ctrl+alt+t快捷键
–
异常体系结构
–
可以用catch查看异常类型
捕获范围由小到大,层层递进
示例:
public class Test {
public static void main(String[] args) {
int a = 1;
int b = 0;
try {//监控区域
System.out.println(a/b);
}catch (Error e){
//如果程序出现上述异常,则执行下面语句
System.out.println("Error");
}catch (Exception e){
System.out.println("Exception");
}catch (Throwable t){
System.out.println("Throwable");
}finally {//善后工作
//无论出不出异常都会执行finally
System.out.println("finally");
}
}
}
throw、throws关键字
public class Test2 {
public static void main(String[] args) {
try {
new Test2().test(1,0);
} catch (ArithmeticException e) {
e.printStackTrace();
}
}
//假设这个方法中,处理不了这个异常,方法上抛出异常
public void test(int a,int b) throws ArithmeticException{
if(b==0){
throw new ArithmeticException();//主动抛出异常,一般在方法中使用
}
System.out.println(a/b);
}
}
实际应用总结
- 处理运行异常时,采用逻辑去合理规避同时辅助 try-catch 处理,程序不至于卡死
- 在多重catch块后面,尽可能加一个大的异常(Exception)来处理可能会被遗漏的异常
- 对于不确定的代码,也可以加上 try-catch ,处理潜在异常,IDEA中会报红色波浪线,按住ALT+enter就有处理提示
- 尽量去处理异常,尽量不要简单的打印输出printStackTrace(),这是快捷键生成的,尽量用代码去拯救异常
- 根据不同的业务需求和业务类型决定具体如何处理异常
- 尽量添加finally语句去释放占用的资源。