This question already has answers here:
When to choose checked and unchecked exceptions
(18个回答)
2年前关闭。
我有这样的代码:
AuthMethod方法检查用户名或密码是否匹配,否则将抛出AuthFailedException。
我应该将其设置为检查异常(AuthFailedException扩展异常)还是取消检查(AuthFailedException扩展RuntimeException)?
我不知道此代码的客户端是否要在发生异常的情况下恢复代码。
(18个回答)
2年前关闭。
我有这样的代码:
public void genericOperation(String username, String password) throws AuthFailedException(){
if(username == null || password == null) throw new NullPointerException();
AuthMethod(username,password)
}
AuthMethod方法检查用户名或密码是否匹配,否则将抛出AuthFailedException。
我应该将其设置为检查异常(AuthFailedException扩展异常)还是取消检查(AuthFailedException扩展RuntimeException)?
我不知道此代码的客户端是否要在发生异常的情况下恢复代码。
最佳答案
从Java documentation on exceptions
这是底线准则:如果可以合理地预期客户端将从异常中恢复,则将其设置为已检查的异常。如果客户端无法采取任何措施来从异常中恢复,请将其设置为未经检查的异常。
在身份验证失败的情况下,可以合理地预期客户端将采取某些特定的操作,例如重新提示输入凭据-因此,这应该是经过检查的异常。
08-06 17:25