【问题标题】:Java Generic authentication method should throws Exception or RuntimeException [duplicate]Java Generic 身份验证方法应抛出异常或 RuntimeException [重复]
【发布时间】:2018-11-29 23:34:20
【问题描述】:

我有这样的代码:

  public void genericOperation(String username, String password) throws AuthFailedException(){
    if(username == null || password == null) throw new NullPointerException();
    AuthMethod(username,password) 
    }

AuthMethod方法检查用户名或密码是否匹配,如果不匹配则抛出AuthFailedException。

我应该将其设为已检查异常(AuthFailedException extends Exception)还是未检查(AuthFailedException extends RuntimeException)?

不知道这段代码的客户端是否想在异常情况下恢复代码。

【问题讨论】:

  • 我投票检查。

标签: java exception try-catch runtimeexception throw


【解决方案1】:

来自Java documentation on exceptions

以下是底线准则:如果可以合理地期望客户端从异常中恢复,则将其设为已检查异常。如果客户端无法从异常中恢复,请将其设为未经检查的异常。

在身份验证失败的情况下,可以合理地期望客户端采取一些特定的操作,例如重新提示凭据 - 所以这应该是一个检查异常。

【讨论】:

  • 问题是我不知道客户在失败的情况下想做什么,我应该选择什么假设?
  • 您不需要知道客户想要做什么,而是客户可以做些什么来从中恢复。另一个需要考虑的衡量标准:如果有异常,是 programming 错误,还是 user input 错误
猜你喜欢
  • 2016-09-12
  • 2011-10-13
  • 2020-06-09
  • 1970-01-01
  • 2016-05-05
  • 2021-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多