This question already has answers here:
When to choose checked and unchecked exceptions
                            
                                (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