Java异常处理理解问题

时间:2016-06-29 18:20:37

标签: java exception-handling arithmeticexception

我无法理解这个程序。我希望它输出" 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");
         }
     }
 }

3 个答案:

答案 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(...)之前抛出异常的原因。