我通常喜欢将局部变量声明为final,但是我看到重复的模式,当我必须在初始化期间处理异常时无法执行此操作。

对于前我有这段代码:

final Client myClient = library.getClient("service");
//do a bunch of steps with myClient


但是我最终经常像这样修改它:

Client myClient = null;
try {
    myClient = library.getClient("service");
} catch (someException ex) {
    // handle
    throw ex;
}
// do stuff with myClient


在我完成所有工作之后,我不想添加捕获,因为随着即将结束,它变得有点难以理解。那么有没有更好的方法可以做到这一点?

最佳答案

您可以将try / catch放在单独的方法中:

. . .
    final Client myClient = getClient();

private Client getClient() {
    try {
        return library.getClient("service");
    catch (someException ex) {
        // handle
        return null;
    }
}


如果在调用getClient()的方法中继续进行处理没有意义,那么另一种选择是声明它引发异常并摆脱try / catch块。

10-02 11:24