Java 异常处理理解问题
Java Exception Handling understanding issue
我无法理解这个程序。我希望它输出 "Hello World",但它只打印 "World"。我认为首先 try
块会执行,打印 "Hello" 和 " ",然后当它遇到 1/0
时,它会抛出 ArithmeticException
。异常将被 catch
块捕获,然后将打印 "World"。
程序如下。
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");
}
}
}
调用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");
}
它不是简单地从左到右扫描 "words"。 ( )
中的所有内容都需要被成功评估,如果是,那么它就会被打印出来。
它看着"Hello",没问题。
接下来它查看 1/0 并创建错误。
如果数学计算成功,它将尝试连接 "Hello" 和结果。如果成功,就会打印出来。
首先 "Hello"+" "+1/0
将被评估。然后作为参数传递给 System.out.println(...)
。这就是为什么在调用 System.out.println(...)
之前抛出异常的原因。
在 println function/method 中传递的参数将首先被检查,然后调用 println.So ,在调用 println.Since 之前会出现异常,异常是 raise 控制将去捕获并且只将打印“世界”
它将逐条检查。因此,它检查整个 println 参数。但是,它有一个例外,因此执行 catch 块。
注意:如果它执行前半部分语句然后检查异常,则不需要保留 try-catch 块。
我无法理解这个程序。我希望它输出 "Hello World",但它只打印 "World"。我认为首先 try
块会执行,打印 "Hello" 和 " ",然后当它遇到 1/0
时,它会抛出 ArithmeticException
。异常将被 catch
块捕获,然后将打印 "World"。
程序如下。
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");
}
}
}
调用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");
}
它不是简单地从左到右扫描 "words"。 ( )
中的所有内容都需要被成功评估,如果是,那么它就会被打印出来。
它看着"Hello",没问题。 接下来它查看 1/0 并创建错误。
如果数学计算成功,它将尝试连接 "Hello" 和结果。如果成功,就会打印出来。
首先 "Hello"+" "+1/0
将被评估。然后作为参数传递给 System.out.println(...)
。这就是为什么在调用 System.out.println(...)
之前抛出异常的原因。
在 println function/method 中传递的参数将首先被检查,然后调用 println.So ,在调用 println.Since 之前会出现异常,异常是 raise 控制将去捕获并且只将打印“世界”
它将逐条检查。因此,它检查整个 println 参数。但是,它有一个例外,因此执行 catch 块。
注意:如果它执行前半部分语句然后检查异常,则不需要保留 try-catch 块。