gpt4 book ai didi

java - 自定义 RuntimeException 未捕获 java.lang.ArrayIndexOutOfBoundsException

转载 作者:行者123 更新时间:2023-11-30 06:59:34 25 4
gpt4 key购买 nike

任何人都可以说出为什么 catch close 正在回避(而不是捕获) ArrayIndexOutOfBoundsException ? catch block 仅适用于没有自定义异常的情况。

class MyException extends RuntimeException {

public MyException(String msg) {

super(msg);
System.out.println("caught in MyException2 constructor");
}
}

public class CustomizedExceptionTester {

public static void main(String[] args) {
try {
doTest();
} catch (MyException me) {

System.out.println("caught in catch block");

System.out.println(me);
}
}

static void doTest() throws MyException {
int[] array = new int[10];
array[10] = 1000;
}
}

打印:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at oca.exceptions.InterfaceWithException.doTest(InterfaceWithException.java:32)
at oca.exceptions.InterfaceWithException.main(InterfaceWithException.java:17)

最佳答案

为什么你会期望它?您在 catch block 中有 MyException;它只会捕获该类型的异常。尽管 MyExceptionArrayIndexOutOfBoundsException 都扩展了 RuntimeException,但这并不意味着 RuntimeException 的所有子类 应该在您指定任何 子类时被捕获;只会捕获指定的类型。

这样想。假设我有“四边形”、“矩形”和“菱形”。如果我说“接住我扔给你的任何矩形”,你会接住菱形吗?但是,如果我说“接住我扔给你的任何四边形”,不管怎样你都会接住。

关于java - 自定义 RuntimeException 未捕获 java.lang.ArrayIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31440426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com