我无法理解这个程序。我希望它输出" Hello World",但它只打印" World"。我认为首先try
块会执行,打印" Hello"和" ",然后遇到1/0
时会抛出ArithmeticException
。例外情况将由catch
阻止,然后"世界"会被打印出来。
该计划如下。
import java.util.*;
class exception{
public static void main(String args[])
{
try
{
System.out.println("Hello"+" "+1/0);
}
catch(ArithmeticException e)
{
System.out.println("World");
}
}
}
答案 0 :(得分:5)
在调用println
函数之前抛出异常。必须在函数调用之前计算参数值。
为了让您的程序达到您期望的结果,您可以编辑try
块中的代码,如下所示:
try
{
// this will work and execute before evaluating 1/0
System.out.print("Hello ");
// this will throw the exception
System.out.print(1/0);
}
catch(ArithmeticException e)
{
System.out.println("World");
}
答案 1 :(得分:1)
它不仅仅是扫描"单词"左到右。需要对( )
内的所有内容进行成功评估,如果是,则会打印出来。
它看着"你好"这很好。 接下来它会查看1/0并创建错误。
如果数学成功评估,它将尝试连接" Hello"结果。如果那是成功的,那么就会打印出来。
答案 2 :(得分:1)
将评估第一个"Hello"+" "+1/0
。然后作为参数传递给System.out.println(...)
。这就是为什么在调用System.out.println(...)
之前抛出异常的原因。