我正在审查我为明天上午的期末考试做准备的期中考试.我错了这个问题,但是没有正确的答案指出,我忽略了向教授询问它.
请考虑以下代码段:
public static void main(String[] args) throws FileNotFoundException
Run Code Online (Sandbox Code Playgroud)
关于此代码的以下哪些陈述是正确的?
FileNotFoundException.FileNotFoundException发生,主要方法应该简单地终止.我选择了第二个选项.
Eld*_*ael 18
答案是4号,
4.-如果发生任何异常,主要方法应该简单地终止.
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");
}
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,如果我抛出一个RuntimeException方法将终止,即使抛出的异常不是一个FileNotFoundException
Mar*_*inV 12
老兄,有点晚了,但回答是3号.
数字1为false,因为它没有处理FileNotFoundException
由于同样的原因,数字2是错误的.
3号是真的.如果抛出FileNotFoundException,则main方法将终止.
4号是假的.如果出现任何异常,它不会终止.它仅在未经检查的异常或FileNotFoundException的情况下终止.如果'throws'子句中没有声明其他已检查的异常,则表示它们正在该方法中处理.
main 方法不会捕获任何异常,而是FileNotFoundException通过将其抛出到调用 main 方法的源来处理。
系统运行时启动 JVM 类,JVM 类中的一个特定类调用 main 方法。
throws在这种情况下,主要方法的处理受 JVM 类的支配。
我想在那个话题上分享我那小小的卑微的研究外壳,希望它能帮助好奇的人:)