2011-11-24 51 views
1

当我编写一个新的异常类型时,我应该只写出所需的构造函数,还是实现存在于Throwable中的所有构造函数(并调用它们的super())?创建一个新的异常类型 - 写入所有的构造函数还是只写需要的?

想一想,我会说只实施需要的东西(YAGNI - 你不会需要它)。如果我以后需要另一个构造函数,我只需添加它。

例子:

public void MyException extends RuntimeException { 
    // I only need this constructor 
    public MyException(Throwable cause) { 
     super(cause); 
    } 
} 

回答

3

只实现你需要什么,并添加你需要他们。我通常添加一个包含String消息和你拥有的消息(用于包装另一个Exception)。

1

是的,你应该实施你所需要的。

我工作/工作的系统至少通常实现至少一个接收异常原因的构造函数(与您的示例完全一样)。另外一个只定义了默认构造函数的异常不会有什么意义,除非它是非常非常特定的东西。

此致敬礼。

2

这取决于你在写什么。

对于一个小程序,不要写死代码。

如果班级正在进入图书馆,或者会被其他团队/团队成员用来进行某种类型的代码所有权,那么请编写完整的班级。请注意这一点:“投机泛化”是软件开发中的一个严重问题。

相关问题