当我编写一个新的异常类型时,我应该只编写所需的构造函数,或者实现Throwable
中存在的所有构造函数(并通过super()
调用它们)?
在考虑它时,我会说只实现所需(YAGNI - 你不需要它)。如果我以后需要另一个构造函数,我只需添加它。
示例:
public void MyException extends RuntimeException {
// I only need this constructor
public MyException(Throwable cause) {
super(cause);
}
}
答案 0 :(得分:3)
仅实施您需要的内容并根据需要添加。我通常添加一个带有String消息和你拥有的消息(用于包装另一个Exception)。
答案 1 :(得分:2)
这取决于你的写作。
对于小程序,不要写死代码。
如果课程进入图书馆或将由其他团队/团队成员使用,其中存在某种代码所有权,则编写完整的课程。注意这一点:“推测性泛化”是软件开发中的一个严重问题。
答案 2 :(得分:1)
是的,你应该只实现你需要的那些。
我周围工作/工作的系统,通常至少实现一个接收异常原因的构造函数(就像你的例子一样)。另外,定义一个默认构造函数的异常也没有多大意义,除非它非常非常具体。
最好的问候。