抛出和异常或返回和错误消息

时间:2014-02-13 19:31:07

标签: java coding-style

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

我的方法的缩减版本是:

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);    
}
}

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

如果抛出异常,则不能轻易忽略,而返回代码可以。另一方面,返回代码在处理“预期”错误时更容易处理,并且返回代码处理起来更便宜(尽管没有错误发生时的开销实际上可能高于异常)。

每个都有其优点。