public class Main {
static void process(String string , String string2) throws Exception {
try {
int a = Integer.valueOf(string);
int b = Integer.valueOf(string2);
a = a/b;
} catch (NumberFormatException e) {
System.out.println("process()捕获了NumberFormatException");
}catch (ArithmeticException e) {
System.out.println("process()捕获了ArithmeticException");
throw new Exception("除法异常被抛出!!!");
}finally{
System.out.println("finally()");
}
}
public static void main(String[] args) throws Exception{
process("3232" , "0");
}
}
运行情况:
process()捕获了ArithmeticException
finally()
Exception in thread "main" java.lang.Exception: 除法异常被抛出!!!
at Main.process(Main.java:12)
at Main.main(Main.java:19)
- 我们可以看到是先执行了finally中的方法,然后Exception异常才被抛到main方法中,最终在main方法中被捕获。是符合我们的期望的。
异常的三大原则
- 明确异常信息
- 尽快抛出(快速失败)
- 延迟捕获