我应该如何记录某些方法/构造函数未抛出的异常,但可能会被另一个被调用的异常抛出?

时间:2012-06-29 00:56:24

标签: java documentation javadoc

假设我有一个包含三个构造函数的类,如下所示:

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

2 个答案:

答案 0 :(得分:2)

你的所有三个构造函数抛出一个异常(你可以凭经验验证) - 你不能指望你的代码的消费者知道底层发生了什么(即参数是否存在)在构造函数中检查,或者由构造函数调用的某个方法检查)。因此,您应该记录所有三个构造函数。

不重复自己总是很好,但并不总是实用 - Javadoc无法表达你想要的关系,所以你需要长篇大论。

答案 1 :(得分:0)

对所有3个使用已检查的例外和文档 - 或为其他2个使用1个私有和文档。