誰能請解釋爲什麼我們應該有像下面的構造函數時定義自定義異常:在java中爲什麼自定義異常也應與ARG作爲「Throwable的原因」構造
public MyException(Throwable cause) {
super(cause);
}
public MyException(String message, Throwable cause) {
super(message, cause);
}
誰能請解釋爲什麼我們應該有像下面的構造函數時定義自定義異常:在java中爲什麼自定義異常也應與ARG作爲「Throwable的原因」構造
public MyException(Throwable cause) {
super(cause);
}
public MyException(String message, Throwable cause) {
super(message, cause);
}
它允許您添加到您的自定義有關拋出該異常的原因的異常實例信息。
當你發現一個異常並拋出另一個異常時,它很有用。
例如:
try {
....
}
catch (SomeException ex) {
throw new MyException ("some message", ex);
}
在你的問題中提到一個應該實現上述構造的MyException
類是Exception
一個子類,但它是不是絕對強制性有隻構造函數。
可以很好地具有不具備Throwable
作爲參數的構造函數如下:
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
。所以很難確定什麼是異常的確切原因。
你可以給我**原因**爲什麼這是一個錯誤的答案和反對票? – Blip
捕捉['Throwable'](https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html)包含子類['Error'](http:// docs.oracle.com/javase/8/docs/api/java/lang/Error.html)。 – Maroun
這允許您鏈接例外。可能的重複:http://stackoverflow.com/questions/5800629/setting-exception-cause-in-java – codeMan
有這樣的構造不是強制性的。您可以將MyException()作爲構造函數,也可以將MyException(String message)作爲構造函數。但是,最好有'Throwable' – Blip