我有以下代码:
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
子句是有意义的。