为什么某些Java异常可能未处理?

Kev*_*ler 1 java exception-handling exception

    public static void main(String[] args) {
    File file = new File("foobar"); 
    file.createNewFile();

    String baz = "baz";     
    int myInt = Integer.parseInt(baz);
}
Run Code Online (Sandbox Code Playgroud)

在这段代码中,IDE或编译器会抱怨createNewFile()抛出了一个未处理的异常,我们需要捕获它以允许代码编译.

但是,parseInt()也抛出一个异常,NumberFormatException,但我们不需要捕获它,虽然它似乎是个好主意.为什么我们不需要捕获该异常?

Arn*_*lle 5

规则是RuntimeException不需要捕获扩展的异常.

NumerFormatException扩展IllegalArgumentException延伸RuntimeException.

Oracle文档:

运行时异常可以在程序中的任何地方发生,而在典型的程序中,它们可以非常多.必须在每个方法声明中添加运行时异常会降低程序的清晰度.因此,编译器不要求您捕获或指定运行时异常(尽管您可以).