分析以下代码,它会显示哪个异常?(异常处理,java)

分析以下代码,它会显示哪个异常?(异常处理,java),java,exception-handling,Java,Exception Handling,正确答案是程序有编译错误。我认为catch(Exception ex)将捕获所有异常,包括NumberFormatException,是一个通用异常捕获了所有异常 块: class Test { public static void main(String[] args) { try { String s = "5.6"; Integer.parseInt(s); // Cause a NumberFormatException int i =

正确答案是程序有编译错误。我认为
catch(Exception ex)
将捕获所有异常,包括
NumberFormatException
,是一个通用异常捕获了所有异常

块:

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");
    }
  }
}
将捕获所有异常,因为异常类是所有异常的基类


当您捕获
异常
时,您将捕获
扩展的所有异常
异常
,所有异常都会这样做。因此,它会产生一个错误,RuntimeException已被捕获

那么异常(运行时)与编译时(编译)错误不同。RuntimeException的捕获块不可访问。它已经由catch块为Exception处理,因为
RuntimeException
已经是
Exception
哦,我明白了,谢谢!我读到我们应该首先处理最具体的异常,但我没有意识到这会导致错误。
catch (Exception ex) {
    System.out.println("NumberFormatException");
}