我有以下代码:

public User getUserById(Long id) {
checkUserExists(id);
return repo.findOne(id);
}

private void checkUserExists(Long id) {
    if (id == null || !repo.exists(id)) {
        throw new NoUserFoundException("No User exists with id: " +id);
    }
}

根据甲骨文:

“如果未检查的异常可以由方法或构造函数的执行引发,并且可以在方法或构造函数的边界外传播,则无需在方法或构造函数的throws子句中声明未检查的异常。”

我是否仍必须在JavaDoc中描述异常(没有@throws子句,而仅描述?)在JavaDoc中描述这种未经检查的异常的最佳方法是什么?

先感谢您!

最佳答案

您正在为方法的用户编写Javadoc。如果知道该用户可能会抛出异常对于该用户很有用,请记录下来!

在您的情况下,如果找不到用户,则知道抛出NoUserFoundException似乎对用户确实有用。

在其他情况下,它用处不大。例如,在很多情况下,Javadoc中没有记录如果参数为null则引发NullPointerException的事实,因为通常以某种方式暗示参数不能为null。

顺便说一句,Oracle谈论的是方法声明之后出现的throws类,而不是Javadoc。如果决定记录非检查异常,则使用@throws子句是有意义的。

09-11 18:04
查看更多