java - 差异错误代码或异常

标签 java error-handling

<分区>

Possible Duplicate:
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;
}

据我所知,我们不应该使用异常来进行流程控制。您能否就错误代码和异常的正确使用发表评论?

最佳答案

首先,您的示例将无法运行,因为在 Java 中参数是按值传递的。因此,即使您更改了 errorMessage 的值,该更改也不会在方法外部可见。

但假设您已修复此问题并正确返回错误代码,问题归结为您要在何处处理错误。

异常会自动在调用堆栈上“冒泡”,直到它们找到处理该特定类型异常的 catch block 。这使您有机会在更高的层次上处理它们,而如果您返回错误代码,则必须立即在直接调用者中处理该错误代码(然后可能会为其调用者设置另一个错误代码等继续,当你看到这种模式时,你可以确定你应该抛出异常)

关于java - 差异错误代码或异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13963337/

相关文章:

java - CollectD Java 插件在 Graphite 中错误地显示零

java - 什么是NullPointerException,我该如何解决?

java - 使用主要监听器和构建数组来播放视频 (VLCJ) 的程序

python-3.x - 如何获取过去的Python错误?

r - r错误: Complex matrix?

java - 即使窗口未聚焦,也使 JTextField 接收输入

java - 如何显示文件名的某些部分

c# - 使用Try-Catch-Finally处理算术异常

java - 在客户端程序中动态加载类

php - 如何解决 r57shell_php_php 警告?