如果我们在中进行资源清理,我们能避免最终阻塞吗?
例如。我们能做这样的事情而最终不使用吗?
try{
// Some statements
db.close();
}catch(Exception e){
db.close();
}
它能按预期工作吗?如果是,那么我们为什么应该或不应该使用它?
只需使用try-with-resources
:
try(Connection db = getConnection()){
//perform stuff
}
一旦CCD_ 2块已经完成处理,则CCD_。
尽可能使用try with resources或try finally(try-catch finally(。
如果我们同时在try-and-catch中进行资源清理,我们能避免最终阻塞吗?
为什么?您可以通过使用错误代码和一些反模式来替换一个工作良好且专门设计的java习语。
假设你将在现实生活中记录或处理异常,这就是为什么你的代码不一样:
不工作:
- 您的连接并不总是关闭的,因为您只处理异常,没有错误或可丢弃
一些反模式:
- 你在重新发明轮子
- DRY(不要重复(
- 首先捕获最具体的异常;一般情况下避免处理异常、错误或抛出
- 请注意吞下异常(finally也有可能!(,try with resources对此使用了抑制的异常
是的,我们可以。但是,为什么要两次调用相同的代码,而不是在任何情况下都要执行一次调用呢?
关于最佳实践,请参阅以下问题Java try/catch/finally在获取/关闭资源时的最佳实践
这按预期工作,但它会重复代码,这意味着如果你想更改"最终部分代码",你必须更改两次代码,而不是在finally块中更改一次。
是的,它会起作用。最后,块基本上用于try/catch中的常见操作。但想想看,你在尝试和捕捉中都有10-20个共同的陈述。那它会是什么样子?最后块帮助您删除代码的冗余。