假设我有一个包含三个构造函数的类,如下所示:
public class ExampleClass {
// constructor #1
public ExampleClass(int a) {
this(a, "aaa"); // "aaa" is just an arbitrary default for b
}
// constructor #2
public ExampleClass(String b) {
this(2, b); // 2 is just an arbitrary default for a
}
// constructor #3
public ExampleClass(int a, String b) {
// a has an arbitrary minimum value of 3
// b has an arbitrary minimum length of 3
if (a < 2 || b.length() < 2) {
throw new IllegalArgumentException("a and b cannot be less than 2");
}
// ...
}
}
在这种情况下,我有三个构造函数。第三个是主要构造函数,其他只是提供默认值,因此可以使用给定的一个值而不是两个值来构造类。我正在尝试通过JavaDoc为这些类编写文档。如果我要编写第一个或第二个构造函数的文档,我会使用@throws
标记来记录潜在的IllegalArgumentException
吗?或者我应该仅为第三个构造函数的文档保存文档IllegalArgumentException
吗?在这种情况下,表达a
的最佳,最恰当的方式必须高于2或b
必须超过2个字符?如何在不使用IllegalArgumentException
进行记录的情况下抛出@throws
?
答案 0 :(得分:2)
你的所有三个构造函数都抛出一个异常(你可以凭经验验证) - 你不能指望你的代码的消费者知道底层发生了什么(即参数是否存在)在构造函数中检查,或者由构造函数调用的某个方法检查)。因此,您应该记录所有三个构造函数。
不重复自己总是很好,但并不总是实用 - Javadoc无法表达你想要的关系,所以你需要长篇大论。
答案 1 :(得分:0)
对所有3个使用已检查的例外和文档 - 或为其他2个使用1个私有和文档。