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