可选的异常处理

时间:2013-02-25 13:30:39

标签: java exception-handling

我正在为一个非常基本的AI API创建一个包装器。当此API出现问题时,它不会抛出任何异常或以其他方式报告问题。

可以在调用API调用之前识别错误(例如错误的参数)。

在包装器中,我想通过抛出运行时异常来实现错误指示。目前,客户可以决定是否要处理它们。在特殊情况下,我会抛出一个检查过的异常但是有一个很好的理由。

问题是当抛出任何异常时程序停止并且无论如何都需要继续。我在想停止抛出异常,只是在记录器中将问题报告为警告,但客户端不知道发生了错误。

AI每秒都会调用一种更新方法。

处理已检查的异常是令人讨厌的,即使调用一个非常简单的调用,代码也会非常难看。

2 个答案:

答案 0 :(得分:0)

您可以使用IllegalArgumentException或根据您的需要创建自定义异常,只需扩展Exception类或实现Throwable。然后,您可以管理应用程序的行为。但是你需要确保块被try-catch包围,这样你就可以管理它们,API shoudl抛出异常,你需要在try-catch-block中捕获它。例如:

try {
 String var = IamUsingThisAPI.methodOfTheAPI();
} catch (Exception e) { // You can create your custom Exception
 //maybe print stack trace but handle as you want
 System.out.println("Handling the exception");
 // Do something
 // Do something
}

答案 1 :(得分:0)

您可以提供以下方法:

public void doSomethingQuiet(...) {
    try {
        doSomething(...);
    } catch (Exception ex) {
        log.warn(ex.getMessage());
    }
}

public void doSomething(...) throws Exception {
    if (incorrectArgs) {
        throw new Exception("Incorrect arguments!");
    }
    // process
}

您还可以将方法名称更改为更“自然”:doSomethingQuiet - > doSomething and doSomething - > doSomethingThrowEx