我试图理解在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?