答案是4号,
4.- 如果发生任何异常,main 方法应直接终止。
throws 子句仅声明该方法引发一个选中的 FileNotFoundException,并且调用方法应捕获或重新抛出它。如果在 main 方法中抛出(而不是 catch)未选中的异常,则该异常也将终止。
检查此测试:
public class ExceptionThrownTest {
@Test
public void testingExceptions() {
try {
ExceptionThrownTest.main(new String[] {});
} catch (Throwable e) {
assertTrue(e instanceof RuntimeException);
}
}
public static void main(String[] args) throws FileNotFoundException {
dangerousMethod();
// Won't be executed because RuntimeException thrown
unreachableMethod();
}
private static void dangerousMethod() {
throw new RuntimeException();
}
private static void unreachableMethod() {
System.out.println("Won't execute");
}
}
如您所见,如果我抛出一个,即使抛出的异常不是RuntimeException
FileNotFoundException