在catch块中引发异常 - 控制流

时间:2018-02-16 17:03:57

标签: java

我试图理解在catch中抛出异常的流程。

public static void main(String[] args) {
        try
        {
            throw new IOException();
        }
        catch(IOException e)
        {
            System.out.println("catch 1");
            throw new ArrayIndexOutOfBoundsException();
        }
        catch (ArrayIndexOutOfBoundsException e)
        {
            System.out.println("catch 2");
        }
        finally {
            System.out.println("finally 1");
        }
    }
}

我正在使用Java 8和IntelliJ IDEA 2016.我每次执行时都会看到IDE控制台中以不同顺序打印的以下3行。这里有什么我想念的东西。

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
at com.boot.config.Test.main(Test.java:17)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
catch 1
finally 1

我不明白为什么在“catch 1”之前会抛出stacktrace?

0 个答案:

没有答案