Java 自定义异常中的超级调用

Java 自定义异常中的超级调用,java,exception,constructor,Java,Exception,Constructor,我只是想知道为什么我们在自己创建的自定义异常中调用super public class MyException extends Exception { public MyException(String message) { super(message); } } 下面是调用super(message)的用途它只是调用基类构造函数: 异常(字符串消息) 使用指定的详细信息构造新异常 super的用法是调用super(b

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

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

下面是调用super(message)的用途

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

异常(字符串消息)


使用指定的详细信息构造新异常


super的用法是调用super(base,parent)类的构造函数,该类恰好是
异常

,因为派生类总是以基类作为模板,所以有必要初始化基类,作为构造派生对象的第一步。默认情况下,如果没有进行
super
调用,Java将使用默认(无参数)构造函数来创建基类。如果希望使用不同的构造函数,则必须使用
super
传入所需的参数并调用正确的构造函数

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

因为:

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

}  

因此,您需要一个超级(消息)调用来设置消息。

这是调用非默认超级的构造函数。如果我们调用超级构造函数,那么自定义异常有什么用?Hi@kavya。与基本异常相比,定制异常的用途是进行任何更改。一个简单的用例是在传递到
super()
调用之前修改消息。但是,您也可以在派生类上定义任何变量或方法,使用者可以使用这些变量或方法来获取更多信息。您能否解释为什么异常中没有接受
int
的构造函数?我有一个自定义异常类,但我无法从传递
int
错误代码的
JNI
C++
中抛出它。但是,我不得不使用
字符串
,因为Exception类有一个接受字符串的构造函数。