This question already has answers here:
Differences between Runtime/Checked/Unchecked/Error/Exception
                                
                                    (8个答案)
                                
                        
                                2年前关闭。
            
                    
我想问一下处理数组的原因(Java设计规则),例如:

public static void main(String args[]){
System.out.println(args[2]);
}


不需要尝试捕获ArrayIndexOutOfBoundsException吗?

是否有某些异常总是由throws分配的方法-javac隐式存在,或者javac在这里完全不一致?

任何回答都会为您提供有关此行为的设计规格/文档的参考。

最佳答案

ArrayIndexOutOfBoundsExceptionRuntimeException的子类,这使其成为未经检查的异常。未检查的异常不需要被捕获,也不需要在throws子句中声明。

这在RuntimeException的Javadoc中进行了说明:


  RuntimeException及其子类是未经检查的异常。如果未检查的异常可以由方法或构造函数的执行引发,并且可以在方法或构造函数的边界外传播,则无需在方法或构造函数的throws子句中声明未检查的异常。

09-25 22:31