【问题标题】:Throwing and exception or returning and error message抛出和异常或返回和错误消息
【发布时间】:2014-02-13 19:31:06
【问题描述】:

我在实用程序类中有一个静态方法,它为字段赋值。

我的方法的简化版本是:

public static void assignValue(String field, String valueToAssign){
    ...
    //code to do assign
}

如果出现错误,我目前正在抛出异常,但是我不确定这是否是正确的方法,因为我在循环中调用 assignValue,并且即使出现异常,我也希望循环继续。所以可能会抛出很多异常

for(int i = 0; i < assignmentList.size(); i++){
try{
    assignValue(assignmentList.get(i).fieldName, assignmentList.get(i).fieldValue);
    }catch(AssignmentFailedException e){
        errorlist.add(e.getMessage());  
    }
}
}

如果assignValue 返回错误消息而不是异常会更好吗?然后我可以存储错误并在列表完成时抛出异常

for(int i = 0; i < assignmentList.size(); i++){
String errorMessage = assignValue(assignmentList.get(i).fieldName, assignmentList.get(i).fieldValue);
if(errorMessage != ""){
    errorlist.add(errorMessage);    
}
}

如果我选择错误消息方法,我是否应该重命名该方法以让用户知道将返回错误消息?

【问题讨论】:

  • 最后一个更好。如果您对“异常情况”有控制权,最好手动处理。
  • 请注意,您应该使用equals 比较字符串,而不是==/!=stackoverflow.com/questions/513832
  • @AshotKarakhanyan - 我认为,鉴于我们都是这里的程序员,我们总是更喜欢自动处理事情。如果可以避免,让程序停止以便用户手动修复某些东西并不是特别可取的。

标签: java coding-style


【解决方案1】:

如果你抛出一个异常,它不能被轻易忽略,而返回码可以。另一方面,在处理“预期”错误时,返回码更容易处理,而且返回码的处理成本更低(尽管没有发生错误时的开销实际上可能比异常时更高)。

各有千秋。

【讨论】:

    【解决方案2】:

    抛出错误或异常并不是特别有效,因为将控制流传递给异常处理程序需要时间。如果可以的话,尽量避免创建和抛出新的。您甚至可以做一些简单的事情,例如找出 assignValue 失败的情况,使用条件(而不是异常)将它们分开,并打印出有关发生情况的消息。

    【讨论】:

      猜你喜欢
      • 2014-03-15
      • 1970-01-01
      • 2010-12-01
      • 1970-01-01
      • 2012-12-22
      • 2012-06-08
      • 1970-01-01
      • 2011-07-16
      • 2020-05-19
      相关资源
      最近更新 更多