我有一个带有自定义异常类的Java项目:
public class CustomException extends Exception {
public CustomException() {
// ...
}
}
当我抛出此异常时,我需要指定一个throws declaration,如下所示:
public class ExceptionTest {
public static void main() throws CustomException {
throw new CustomException();
}
}
否则,编译器会告诉我我有一个“未处理的异常”。
然而,当我抛出一个ArrayIndexOutOfBoundsException
(例如)而不是我的CustomException
时,当我没有指定一个抛出声明时,它不会给我任何这样的错误:
public class ExceptionTest {
public static void main(String[] args) {
throw new ArrayIndexOutOfBoundsException();
}
}
为什么在CustomException
的情况下我需要指定一个抛出声明,而在ArrayIndexOutOfBoundsException
的情况下,我不需要?