我有两个选择:
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);
}
}
如果我必须考虑代码可维护性和可扩展性,那么首选哪一个?
答案 0 :(得分:6)
使用第二个。 RuntimeException
和您继承的类的构造函数的参数是错误消息,因此没有理由在代码中复制RuntimeException
已经提供的功能。
答案 1 :(得分:2)
我的号码是2号。第一号看起来像重新发明轮子。
此外,考虑YAGNI和KISS,似乎getMessage()
方法和msg
属性不会为您的班级带来任何额外价值。此外,如果其他人在阅读您的代码时碰到它,我猜他/她会说或想“为什么他/她重新定义这些东西”。
如果您将来需要自定义getMessage()
方法,请写下来。
答案 2 :(得分:1)
不是第一个。
如果“语法无效:”是您邮件的一部分,您可以使用:
public class SyntaxException extends RuntimeException {
public SyntaxException(String wrongSyntax) {
super("Invalid syntax: " + wrongSyntax);
}
}
但至少它取决于这样一个事实:你是否需要i18n。
答案 3 :(得分:0)
第二个。由于基类已经有消息,因此使用它是有意义的。