私は最初のカスタムを実装しようとしていますRuntimeException
:
public class MyException extends RuntimeException {
private static final long serialVersionUID = 1L;
private boolean isFizz;
private boolean isBuzz;
private Widget widget;
public class MyException(boolean isFizz, boolean isBuzz, Widget widget) {
super();
setIsFizz(isFizz);
setIsBuzz(isBuzz);
setWidget(widget);
}
// Getters and setters for all 3 properties...
@Override
public String toString() {
System.out.println("MyException is now in string form.");
}
}
これをテストするとき:
MyException exc = new MyException(false, true, new Widget());
System.out.println(exc.toString());
System.out.println(exc.getMessage());
私は得る:
MyException is now in string form.
null
だからgetMessage()
うまくいきません。toString()
と の両方でgetMessage()
同じ文字列を生成したいのですが、単純に が返されると思いました。Throwable#getMessage()
toString()
だから私は尋ねます:オーバーライドの「通常の」方法はgetMessage()
何ですか?文字通りtoString()
、次のようにオーバーライドする必要がありますか:
@Override
public String getMessage() {
return toString();
}
それとももっと良い方法がありますか?前もって感謝します。