Java 差异错误代码或异常
可能重复: 我想知道什么时候应该使用C语言中使用的错误代码,什么时候应该使用异常。考虑下面的示例,其中需要一个GETDATA函数,如果成功的话,应该返回一个数据串,否则将返回错误消息。我们应该如何报告错误?作为例外或错误消息Java 差异错误代码或异常,java,error-handling,Java,Error Handling,可能重复: 我想知道什么时候应该使用C语言中使用的错误代码,什么时候应该使用异常。考虑下面的示例,其中需要一个GETDATA函数,如果成功的话,应该返回一个数据串,否则将返回错误消息。我们应该如何报告错误?作为例外或错误消息 public int fo(arguments) { //some code String data = ""; String errMsg = ""; boolean rc = getData(arguments, data, errMs
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;
}
据我所知,我们不应该在流控制中使用异常。请您评论一下错误代码和异常的正确使用好吗?首先,您的示例不起作用,因为在Java中参数是按值传递的。因此,即使您更改了errorMessage的值,该更改在方法外部也不会可见 但是假设您解决了这个问题并正确返回了错误代码,那么问题就归结为您希望在哪里处理错误
异常会自动在调用堆栈上冒泡,直到它们找到处理该特定类型异常的catch块。这使您有机会在更高的级别上处理它们,而如果您返回错误代码,则必须立即在直接调用方中处理该错误代码,然后可能会为其调用方设置另一个错误代码,等等,当您看到此模式时,您可以确定您应该抛出一个异常。首先,您的示例不起作用,因为在Java中参数是按值传递的。因此,即使您更改了errorMessage的值,该更改在方法外部也不会可见 但是假设您解决了这个问题并正确返回了错误代码,那么问题就归结为您希望在哪里处理错误
异常会自动在调用堆栈上冒泡,直到它们找到处理该特定类型异常的catch块。这使您有机会在更高的级别上处理它们,而如果您返回错误代码,则必须立即在直接调用方中处理该错误代码,然后可能会为其调用方设置另一个错误代码,等等,当您看到此模式时,您可以确定应该抛出异常,而不是errorMessage=无效参数;返回false;==>抛出新的IllegalArgumentExceptionValid参数:例如,在这种情况下,数据为null是人们所期望的。想要更正标题中的键入错误,但出于某种原因,对该标题提出质疑一些人认为不应在此处使用例外。我不明白为什么不。如果使用异常,可以让方法返回数据或抛出包含错误消息的异常。您当前尝试返回3条数据的方法将无法按您的方式工作。errorMessage=无效参数;返回false;==>抛出新的IllegalArgumentExceptionValid参数:例如,在这种情况下,数据为null是人们所期望的。想要更正标题中的键入错误,但出于某种原因,对该标题提出质疑一些人认为不应在此处使用例外。我不明白为什么不。如果使用异常,可以让方法返回数据或抛出包含错误消息的异常。您当前尝试返回3条数据的方法将无法按您现有的方式工作。