在返回字符串错误的方法中是否有任何好的事实标准'一切顺利'的消息?

时间:2009-10-12 17:49:55

标签: error-handling

所以我的类获取数据并做它的事情,如果出现任何问题则返回错误消息。如果一切顺利,我应该怎么做弦?空值? “1”? “好!”? “成功”?

请支持你的回答。

2 个答案:

答案 0 :(得分:2)

Unix标准返回码使用“0”表示正常 - 通过类比,通常建议使用空字符串(长度为0),至少在可以将“”值视为“false”的语言中。

例如,在Perl中:if ( $error = my_method_call() ) { print "Failed: $error\n" }

在一种没有这种含义的语言中(使用“”作为假),任何字符串都可以选择为“OK”,只要它明显可读(“OK”适合该法案)。

答案 1 :(得分:1)

方法永远不应该返回字符串错误。它们太容易出错并且比显而易见的替代方案更昂贵,返回整数代码,您可以将其转换为描述性常量,并使用单个方法将这些代码转换为字符串。

如果您将使用错误代码将它们打印出来(或记录它们),那么使用字符串可能没问题,但是再一次,没有什么能阻止您在错误方法本身中打印或记录错误并返回调用者的状态代码失败。

如果您将使用字符串错误代码在代码中内部检查不同的条件,字符串是一个痛苦:

rv = some_function();
if (rv == "The file could not be read") {
    take_corrective_action();
}

关于在错误代码中包含详细信息,调用者(通常)具有详细信息并可以撰写完整的错误消息:

rv = read_data(FILE);
if (rv == READ_PERMISSION_ERROR) {
    log("The file " + FILE + " could not be read. You don't have permissions"); 
}