我一些其他的答案一致认为的正确答案的问题是,选项3选项4说:
- 主要方法应该简单地终止,如果发生任何异常。
请注意此选项中的“任何”。下面是其中发生异常的代码示例,但main()
不会终止:
public static void main(String[] args) throws FileNotFoundException {
try {
methodThatThrowsACheckedException();
} catch (SomeCheckedException e) {
// do something to handle this exception
}
}
在这段代码中发生异常,但该方法不会终止,因为它已经建立,以处理这个异常。如果这个例外是未被捕获的UncheckedException
,那么该方法当然会终止。然而,选项4的意义在于,任何反例都会使其无效,因为它表示出现“任何”异常。
选项3,但是,限制了这种终止于仅当在方法的签名抛出异常发生:
- 如果发生
FileNotFoundException
主要方法应该简单地终止。
之所以选择3更有意义,因为类似于下面的代码是没有意义的实践:
public static void main(String[] args) throws FileNotFoundException {
try {
methodThatThrowsFileNotFoundException();
} catch (FileNotFoundException e) {
// do something to handle this exception
}
}
它没有太大的意义来声明一个方法抛出一个异常,但在方法中捕获该异常(除非可能在执行某些操作后重新抛出它,在这种情况下,方法3仍然存在,因为方法最终终止)。
嗯,但问题是关于'公共静态无效的主要(字串[] args)抛出FileNotFoundException异常 '签名,不是一般 – PermGenError
好了,测试了一下,如果你把比'FileNotFoundException'它赢得了其他经过检查的异常不会编译。否则,如果该方法抛出一个未经检查的异常,那么它将简单地结束传播未经检查的异常。 – ElderMael
嗯,真的。 +1 :) – PermGenError