如何继承RuntimeException类?

时间:2010-11-16 15:34:53

标签: java design-patterns exception

我有两个选择:

public class SyntaxException extends RuntimeException {
  private String msg;
  public SyntaxException(String m) {
    this.msg = m;
  }
  public String getMessage() {
    return "Invalid syntax: " + this.msg;
  }
}

public class SyntaxException extends RuntimeException {
  public SyntaxException(String m) {
    super("Invalid syntax: " + m);
  }
}

如果我必须考虑代码可维护性和可扩展性,那么首选哪一个?

4 个答案:

答案 0 :(得分:6)

使用第二个。 RuntimeException和您继承的类的构造函数的参数是错误消息,因此没有理由在代码中复制RuntimeException已经提供的功能。

答案 1 :(得分:2)

我的号码是2号。第一号看起来像重新发明轮子。

此外,考虑YAGNIKISS,似乎getMessage()方法和msg属性不会为您的班级带来任何额外价值。此外,如果其他人在阅读您的代码时碰到它,我猜他/她会说或想“为什么他/她重新定义这些东西”。

如果您将来需要自定义getMessage()方法,请写下来。

答案 2 :(得分:1)

不是第一个。

如果“语法无效:”是您邮件的一部分,您可以使用:

public class SyntaxException extends RuntimeException {
  public SyntaxException(String wrongSyntax) {
    super("Invalid syntax: " + wrongSyntax);
  }
}

但至少它取决于这样一个事实:你是否需要i18​​n。

答案 3 :(得分:0)

第二个。由于基类已经有消息,因此使用它是有意义的。