由于SCJP备考,复习一些基础知识,发现不少有意思的问题。
如java对异常的处理机制,如果没有特别的留意,很可能犯错。
如以下代码,
    void test2(){
        throw new ArithmeticException();
    }
编译通过,并也能够顺利执行。这与书上说的java 异常处理机制不同,书上说“方法体内抛出的任何异常该方法都要在throws列出”。但是在JDK API的帮助文档中又这么说:“RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。 可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。”;ArithmeticException是RuntimeException的子类,按照API文档来讲,上述代码完全无问题。所以提出第一个问题:为什么RuntimeException及其子类有如此特权?