如果我们尝试并抓住来进行资源清理,是否可以避免最终阻塞?
例如 我们可以做这样的事情并且最终不使用吗?
try{
// Some statements
db.close();
}catch(Exception e){
db.close();
}
它将按预期工作吗?如果是,那么我们为什么应该或不应该使用它?
答案 0 :(得分:2)
只需使用try-with-resources
:
try(Connection db = getConnection()){
//perform stuff
}
try
块完成处理后,Connection
将关闭。
答案 1 :(得分:0)
是的,我们可以。但是,为什么您要两次调用相同的代码,而不是要在任何情况下都执行一次调用?
有关最佳做法,请参见此问题Java try/catch/finally best practices while acquiring/closing resources
答案 2 :(得分:0)
这可以按预期工作,但是它会重复代码,这意味着,如果您想更改“最终零件代码”,则必须将代码更改两次,而不是将其放入finally块中。 / p>
答案 3 :(得分:0)
是的,它将起作用。最后,block基本上用于 try / catch 中的常见操作。但是考虑一下,您在尝试和抓住中都有10到20条共同的陈述。那会是什么样子? 最终阻止可帮助您消除代码的冗余。
答案 4 :(得分:0)
请尽可能使用try-with-resources或进行try-finally(try-catch-finally)。
如果我们尝试同时进行资源清理,是否可以避免finally阻塞?
为什么?您可以通过使用错误的代码并使用一些反模式来替代运行良好且为此目的设计的Java习惯用法。
假设您将在现实生活中记录或处理异常,这就是为什么您的代码不同的原因:
不起作用:
一些反模式: