我们在代码中使用 try catch 块。我想在这里问的是,使用 finally 块是一个很好的做法。我在代码中没有看到太多 finally 块。这是不好的做法吗?
4 回答
Catch:当出现问题时。
最后:当某事/没有出错时。
当您想要做某事时,即使是否抛出异常, finally 块也会帮助您。比如关闭数据库连接,释放资源。您不能在 catch 块中执行此操作,因为仅在引发异常时才执行 catch。
问:什么时候使用try-catch
?
Ans:当抛出异常时你想做点什么
问:什么时候使用try-finally
?
Ans:即使抛出异常,你也想做一些事情。
问:什么时候使用try-catch-finally
?
Ans:当你只在抛出异常时想要 x 并且在抛出异常时想要 y 时。
总结一下
try{
//.....
}
catch{
// Something you want to do only when exception is thrown
// Like OMG evil execption RUN RUN
}
finally{
// Something you want to do even the exception is thrown or not
// Like who the hell cares about exception
}
如果您需要处理异常并且在发生错误时仍然必须执行一些代码(通常是清理、处理资源),这当然是一个好习惯。
引用“处理异常的最佳实践”(http://msdn.microsoft.com/en-us/library/seyhszts(v=VS.71).aspx):
在可能产生异常的代码周围使用 try/finally 块,并将您的 catch 语句集中在一个位置。这样,try 语句生成异常,finally 语句关闭或释放资源,catch 语句从中心位置处理异常。
使用 finally 是一个好习惯。无论是否发生异常,它都会执行。
如果你在你的程序中做任何数据库操作,那么finally block
是不错的选择。所以,在这里使用 finally 块,它会自动关闭数据库。例如:
try
{
//code of operation
}
catch(Exception error)
{ //code to handle exception
error.printStackTrace();
}
finally
{ //any code which need to execute mandatory
commit();
db.close();
}
在上面的示例中,try block
处理打开的 DB 连接以及插入、检索或更新 DB。catch block
处理异常并finally block
关闭所有数据库连接。