2010-11-16 87 views
3

我有两个选择:如何继承RuntimeException类?

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); 
    } 
} 

哪一个是首选,如果我要考虑一下代码的可维护性和可扩展?

回答

6

使用第二个。既RuntimeException和你的继承类的构造函数的参数是错误信息,所以没有理由复制已经RuntimeException在你的代码中给出该功能。

2

我要去用数字2号一个看起来像重新发明轮子。

此外,想着YAGNIKISS,似乎getMessage()方法和msg属性会带来更多附加价值的类。此外,如果有人在阅读代码时碰到它,我猜他/她会说或者想“他/她为什么重新定义这些东西”。

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

0

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

1

不是第一个。

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

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

但至少它依赖于这样的事实:是否需要国际化与否。