Java:检查异常的强制处理程序

3 java exception checked

java 文档说检查异常必须指定可以“捕获”异常或在方法声明中抛出异常的处理程序。但是,如果我这样做,例如:

public class DivZero{
 public static void main(String[] args){
   int a=10;
   int[] b={1,2,3,4,0};
   for (int i=0;i<b.length;i++){
    System.out.println(a/b[i]);
   }
 }
}
Run Code Online (Sandbox Code Playgroud)

它也可以在没有“try-catch”或“throws”声明的情况下正常工作。它抛出一个java.lang.ArithmeticException。那么,这不是强制性的吗?编译器以相同的方式隐式抛出合适的 Java“Throwable”类。是这样吗?

Tom*_*icz 5

ArithmeticExceptionextendsRuntimeException因此它不是一个已检查的异常。受检异常是继承自Exception但不是自RuntimeException.

引用JLS,11.1.1。异常的种类

[...] 已检查异常类都是Throwableother thanRuntimeException及其子类和 Error 及其子类的子类。