请考虑以下代码段:
Scanner in = new Scanner(. . .);
. . .
if (in.hasNext())
{
throw new IOException("End of file expected");
}
其中两个答案是:
一个。程序将显示消息"预期文件结束"如果在执行if语句时输入中还有数据。不正确
湾如果在执行if语句时输入中还有数据,程序将抛出异常。正确
我选择" a"。这不是真的吗?这两个陈述都不正确吗?谢谢。
答案 0 :(得分:2)
该程序可能会也可能不会打印消息"预期文件结束"。如果抛出的异常从未被捕获,则程序将终止,并且与堆栈跟踪一起将打印该消息。但是,异常可能会在堆栈中被进一步捕获(即通过调用包含相关代码的方法的方法),在这种情况下,消息可能会打印出来也可能不会打印出来,具体取决于方法对异常执行的操作
如果您只给出上面的代码而没有其他上下文,那么唯一可以确定的是抛出异常。其他任何东西都取决于程序中代码的上下文。
答案 1 :(得分:1)
b定义为真,a不完全正确
很明显为什么b为真,因为如果符合条件,throw语句会抛出异常
但是,只有在未捕获异常并且默认异常处理程序打印异常消息时,a才会出现
但是,throw语句技术上并没有显示任何内容
如果您捕获异常或为此线程设置另一个未捕获的异常处理程序,则您的异常消息可能永远不会在任何地方显示。
这就是为什么只有b 当然正确。