【问题标题】:Should I using try/catch for checking missing input?我应该使用 try/catch 来检查丢失的输入吗?
【发布时间】:2020-08-22 14:42:10
【问题描述】:

我的应用程序需要显示所有空输入错误。我可以使用 if-else 来存储所有错误,但根据this post,我应该使用 try-catch 块来检查所需的输入。如何练习使用 try-catch 以及最佳做法是什么?谢谢。

创建用户的示例。如果使用if-else,检查代码应该是这样的

if(isEmpty(inputUserName)){
  errorList.add("User name is required");
}
if(isEmpty(inputPassword)){
  errorList.add("Password is required");
}
if(isEmpty(inputAnotherRequiredFields)){
  errorList.add("Fields is required");
}
....

【问题讨论】:

  • 当您尝试使用变量而不是使用您在此处发布的代码时抛出异常是最有意义的 IMO。这可能是将用户名和密码作为参数的方法,例如,如果其中一个为空,则可能引发异常
  • 您链接的问题与此主题无关​​。它的五个答案中没有一个能说出你所声称的。如果为此使用异常,则一次只能检测到一个错误。

标签: java exception server


【解决方案1】:

例外适用于非常具体的情况。

  • 如果一个方法被调用并且由于某种原因不能履行它的契约,它不会正常返回,而是抛出一个异常。
  • 如果它能够完成它的工作(或者它的工作是寻找一些特殊情况,如缺失值),它应该正常返回并将其结果作为返回值呈现。

所以,我只会看到您的代码 sn-p 抛出异常的原因,前提是它位于某些执行业务逻辑的方法中(例如 bankAccountDetails(...))。这种方法不能完成它的工作,例如没有提供银行帐号,因此符合“无法履行我的合同”标准。

但是,如果您正在编写类似 getParameterErrors(...) 的代码,我会返回一个错误列表,因为处理丢失参数显然是该方法工作的一部分。

所以,这一切都取决于您正在编码的方法的合同。

【讨论】:

    猜你喜欢
    • 2020-02-11
    • 2017-05-01
    • 2021-06-06
    • 1970-01-01
    • 2019-03-24
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多