我通常喜欢将局部变量声明为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块。