可能重复:
Exceptions or error codes
When is it appropriate to use error codes?
我想知道何时应该使用C等语言中使用的错误代码以及何时使用异常。考虑以下示例,其中我们需要一个getData()函数,如果成功则返回数据字符串,否则返回错误消息。我们应该如何报告错误?作为例外或错误消息?
public int fo(arguments) {
//some code
String data = "";
String errMsg = "";
boolean rc = getData(arguments, data, errMsg);
// do something based on the results of getData()
// and report error messages in case of errors
}
您如何看待以下实施:
boolean getData(some arguments, String data, String errorMessage){
{
//check arguments for null pointers or invalid values and return error
//message
errorMessage = "Invalid Arguments";
return false;
}
{
//check for other errors
errorMessage = "Some Error";
return false;
}
// no error, return valid data
data = "some valid data";
return true;
}
据我所知,我们不应该使用流量控制的例外。您能评论一下错误代码和例外的正确使用吗?
答案 0 :(得分:4)
首先,您的示例不起作用,因为参数是通过Java中的值传递的。因此,即使您更改errorMessage
的值,该更改也不会在方法外显示。
但假设您已修复此问题并正确返回错误代码,问题归结为您希望处理错误的位置。
异常会在调用堆栈上自动“冒泡”,直到找到处理该特定类型异常的catch
块。这使您有机会在更高的级别上处理它们,而如果您返回错误代码,则必须立即在直接调用者处理该错误代码(然后可能为其调用者设置另一个错误代码,因此on,当你看到这个模式时,你可以确定你应该抛出异常而不是)