创建一个新的Exception类型 - 编写所有构造函数或仅编写所需的构造函数?

时间:2011-11-24 12:12:59

标签: java exception

当我编写一个新的异常类型时,我应该只编写所需的构造函数,或者实现Throwable中存在的所有构造函数(并通过super()调用它们)?

在考虑它时,我会说只实现所需(YAGNI - 你不需要它)。如果我以后需要另一个构造函数,我只需添加它。

示例:

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

3 个答案:

答案 0 :(得分:3)

仅实施您需要的内容并根据需要添加。我通常添加一个带有String消息和你拥有的消息(用于包装另一个Exception)。

答案 1 :(得分:2)

这取决于你的写作。

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

如果课程进入图书馆或将由其他团队/团队成员使用,其中存在某种代码所有权,则编写完整的课程。注意这一点:“推测性泛化”是软件开发中的一个严重问题。

答案 2 :(得分:1)

是的,你应该只实现你需要的那些。

我周围工作/工作的系统,通常至少实现一个接收异常原因的构造函数(就像你的例子一样)。另外,定义一个默认构造函数的异常也没有多大意义,除非它非常非常具体。

最好的问候。