10

我只想知道为什么我们在自己创建的自定义异常中调用 super。

public class MyException extends Exception 
{ 
   public MyException(String message)         
  {  
    super(message);        
  }      
}

这里调用super(message)有什么用

4

4 回答 4

13

由于派生类总是以基类为模板,因此在构造派生对象时,首先需要初始化基类。默认情况下,如果没有super调用,Java 将使用默认(无参数)构造函数来创建基类。如果要使用不同的构造函数,则必须使用super传递所需的参数并调用正确的构造函数。

在自定义异常的情况下,常用super来初始化异常的错误信息;通过将消息传递给基类构造函数,基类将负责正确设置消息的工作。

于 2012-12-17T04:52:39.380 回答
2

它只是调用基类构造函数:

Exception(String message)

使用指定的详细消息构造一个新异常。

于 2012-12-17T04:51:45.237 回答
2

因为:

public MyException(String message)         
  {  
   //super() implicit call, how to set message???

}  

所以你需要一个超级(消息)调用来设置消息。

于 2012-12-17T04:53:37.557 回答
1

super 的用途是调用 super(base, parent) 类的构造函数,该类恰好是Exception该类

于 2012-12-17T04:52:02.247 回答