Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何继承RuntimeException类?_Java_Design Patterns_Exception - Fatal编程技术网

Java 如何继承RuntimeException类?

Java 如何继承RuntimeException类?,java,design-patterns,exception,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 {
  private String msg;
  public SyntaxException(String m) {
    this.msg = m;
  }
  public String getMessage() {
    return "Invalid syntax: " + this.msg;
  }
}


如果我要考虑代码的可维护性和可扩展性,我会选择哪一个。第一个看起来像是重新发明轮子

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


如果将来需要自定义的
getMessage()
方法,那么就编写它。

第二种方法。因为基类已经有了一条消息,所以使用它是有意义的

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

不是第一个

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

public class SyntaxException extends RuntimeException {
  public SyntaxException(String wrongSyntax) {
    super("Invalid syntax: " + wrongSyntax);
  }
}
但至少这取决于一个事实:你是否需要i18n

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