package com.exception;
public class Test {
public static void main(String[] args) {
int a = 1;
int b = 0;
//可以使用Ctrl + ALt + T 快捷键
// System.out.println(a/b);
try {
new Test().a();
// if (b == 0){
// throw new ArithmeticException(); //知道b为零主动抛出异常 一般在方法中使用
// }
System.out.println(a / b);
} catch (Error e){ //先把error 写前面 从小到大
System.out.println("Error");
} catch (Exception e){ //之后是Exception
System.out.println("Exception");
}catch (Throwable t) { //catch里是想要捕获的参数类型 Throwable是捕获异常的最高级 之后是error、Exception、
System.out.println("Throwable");
}
finally {
System.out.println("finally");
}
//finally 可以不要finally
}
public void a() {
b();
}
public void b() {
a();
}
}
输出:
Error
finally
首先a/0是Error的,会直接捕获在Error中,不会再Throwable中捕获,因为有先后顺序,如果我们事先知道a/b分母为0,采用以下代码:
if (b == 0){
throw new ArithmeticException(); //知道b为零主动抛出异常 一般在方法中使用
}
这样会直接在程序中捕获异常,输出为:
Exception
finally