我的问题与try catch块的句法行为有关。
空的try块和一个如下的catch块。
为什么编译器允许捕获任何类型的Exception或RuntimeException,而对于已检查异常的不可达代码则会报错?这是因为JVM代码可以抛出这些类型吗?JVM如何在空的try块中抛出ArrayIndexOutOfBoundsException呢?
空的try块和一个如下的catch块。
void fun() {
try {}
catch(Exception e) {}
}
或者
try {}
catch(ArrayIndexOutOfBoundsException e) {}
代码编译成功,但编译器报错:
try {}
catch(IOException e) {}
为什么编译器允许捕获任何类型的Exception或RuntimeException,而对于已检查异常的不可达代码则会报错?这是因为JVM代码可以抛出这些类型吗?JVM如何在空的try块中抛出ArrayIndexOutOfBoundsException呢?