gpt4 book ai didi

java - 让 Java Exception 子类的 getMessage() 工作

转载 作者:行者123 更新时间:2023-11-30 09:26:56 27 4
gpt4 key购买 nike

我正在尝试实现我的第一个自定义 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();
}

或者有更好的方法吗?提前致谢。

最佳答案

I thought that Throwable#getMessage() simply returned toString().

你搞错了。 getMessage() 返回传递给父类(super class)构造函数的任何消息:

 public MyException(boolean isFizz, boolean isBuzz, Widget widget) {
super("This is the message");

toString() 的默认实现返回异常类名,后跟消息。

关于java - 让 Java Exception 子类的 getMessage() 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14791393/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com