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 块。