Java 具有参数的方法";异常处理类对象“;在爪哇

Java 具有参数的方法";异常处理类对象“;在爪哇,java,exception,Java,Exception,亲爱的朋友们,我是java异常处理的初学者。我从一个教程中得到了这个示例,我运行了这个代码,它是打印的算术异常。如果我删除了这个方法,它的参数是arithmetricexception,那么第一个方法就是print Exception。 请任何人都解释一下这段代码发生了什么 public class Question1 { public static void javaHungry(Exception e) { System.out.println("Exception");

亲爱的朋友们,我是java异常处理的初学者。我从一个教程中得到了这个示例,我运行了这个代码,它是打印的算术异常。如果我删除了这个方法,它的参数是arithmetricexception,那么第一个方法就是print Exception。 请任何人都解释一下这段代码发生了什么

public class Question1 {

  public static void javaHungry(Exception e) {
    System.out.println("Exception");
  }

  public static void javaHungry(ArithmeticException ae) {
    System.out.println("ArithmeticException");
  }

  public static void javaHungry(Object obj) {
    System.out.println("Object");
  }

  /**
  * @param args
  */
  public static void main(String[] args) {
    javaHungry(null);
  }

}

当重载方法并传递适合所有方法的参数时,可以在运行时选择最具体的方法

这里的说明顺序是

ArithmeticException  > Exception  > Object 
1) 如果使用
算术异常
删除方法,它将选择
异常


2) 如果删除带有
异常的方法
,它将选择
对象

null
的方法调用采用要调用的最具体的方法。在您的例子中,首先是算术异常,因为它是最具体的
Exception
比object更具体,因此如果删除
javahunger(算术异常ae)
methodhi suresh非常感谢您的回复和解释,但我怀疑Exception是所有其他异常类的超类。那么,算术异常是如何比异常更具体的。请解释一下,你的想法正好相反。按照你的逻辑,它应该调用对象,对吗?因为对象是异常的超类。谢谢你,suresh,但很抱歉我还是不清楚。“最具体的方法”我不明白这意味着什么。因为异常也可以为null,算术也可以为null。但是为什么会这样请帮助我。是的,我理解sry,非常感谢。