JAVA中的异常抛出

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方法中被捕获。是符合我们的期望的。

异常的三大原则

  • 明确异常信息
  • 尽快抛出(快速失败)
  • 延迟捕获

你可能感兴趣的:(JAVA中的异常抛出)