我应该生成异常消息吗?

时间:2013-01-14 13:30:05

标签: java exception

我应该生成异常消息(在我的示例中来自link参数)还是我的构造函数应该采用message参数?

class ReadFromNotConnectedInputException extends RuntimeException {

    private String link;

    public ReadFromNotConnectedInputException(final String link)
    {
        this.link = link;
    }

    public String getLink()
    {
        return link
    }

    public String getMessage()
    {
        return String.format("Cannot read from link \"%\", link not connected.", link);
    }
}

4 个答案:

答案 0 :(得分:3)

我会像下面这样写。如果我要努力创建一个Exception,我会把它作为一个检查过的Exception。

class ReadFromNotConnectedInputException extends RuntimeException {
    private final String link;

    public ReadFromNotConnectedInputException(final String link) {
        super("Cannot read from link \"" + link + "\", link not connected.");
        this.link = link;
    }

    public String getLink() {
        return link
    }
}

class ReadFailedLinkNotConnectedException extends Exception {
    public ReadFailedLinkNotConnectedException (final String link) {
        super(link);
    }
}

答案 1 :(得分:1)

由于您选择了RuntimeException,这意味着您不打算在本地处理它(靠近它被抛出的位置),但是在堆栈中的某个更高级别处理它会处理许多不同的例外。

在这种情况下,不会涉及异常特定的逻辑;您将在日志文件中写入错误条目并进行清理。因此,简单的message属性比单独的String属性+复杂的getMessage实现更适合该法案。

答案 2 :(得分:0)

您应该接受message参数并调用超级构造函数。

答案 3 :(得分:0)

IMO如果异常是 API 的一部分,那么您应该在构造函数中获取message参数并将其传递给super。

这样做的主要优点是您可以更改来自不同模块的消息格式,如果您保留固定格式,那么所有格式都将保持不变。