【问题标题】:Analyze the following code, which exception does it display? (Exception handling, java)分析下面的代码,显示的是哪个异常? (异常处理,java)
【发布时间】:2016-02-17 12:32:43
【问题描述】:
class Test {
  public static void main(String[] args) {
    try {
      String s = "5.6";
      Integer.parseInt(s); // Cause a NumberFormatException

      int i = 0;
      int y = 2 / i;
    }
    catch (Exception ex) {
      System.out.println("NumberFormatException");
    }
    catch (RuntimeException ex) {
      System.out.println("RuntimeException");
    }
  }
}

正确答案是程序有编译错误。我认为catch (Exception ex) 会捕获所有异常,包括NumberFormatException,这是一个捕获所有异常的一般异常?

【问题讨论】:

  • 好吧,异常(运行时)与编译时(编译)错误不同。
  • RuntimeException 的无法到达的 catch 块。它已经被 Exception 的 catch 块处理
  • 因为RuntimeException 已经是Exception
  • 哦,我明白了,谢谢!我读到我们应该首先处理最具体的异常,但我没有意识到这会导致错误。

标签: java exception-handling


【解决方案1】:

方块:

catch (Exception ex) {
    System.out.println("NumberFormatException");
}

将捕获所有异常,因为Exception 类是所有异常的基类。

当你捕捉到Exception 时,你捕捉到了extend Exception 的所有异常,所有的异常都会这样做。因此,它会产生 RuntimeException 已被捕获

的错误

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多