任何人都可以在定义自定义异常时解释为什么我们应该有类似下面的构造函数:
public MyException(Throwable cause) {
super(cause);
}
public MyException(String message, Throwable cause) {
super(message, cause);
}
答案 0 :(得分:3)
它允许您添加有关抛出该异常的原因的自定义Exception实例信息。
当您捕获一个异常并抛出另一个异常时,它非常有用。
例如:
try {
....
}
catch (SomeException ex) {
throw new MyException ("some message", ex);
}
答案 1 :(得分:1)
正如你的问题中所提到的,应该为MyException
类实现上述构造函数,Exception
类是Throwable
的子类但是不是绝对必需的< / strong>只拥有那些构造函数。
您可以使用以下没有public MyException() {
super();
}
public MyException(String message) {
super(message);
}
作为参数的构造函数:
MyClass
但是这些构造函数有一个缺点。考虑以下代码假设在课程public static void myMethod() throws MyException{
//Some code
}
中:
myMethod()
现在在某些代码中,您可以调用此try{
MyClass.myMethod();
} catch (MyException e){
e.getCause();
}
,如下所示:
e.getCause()
如果您使用构造函数和我的答案中所述的构造函数,null
将返回{{1}}。因此很难确定异常的确切原因是什么。