我什么时候应该在Java的try-catch-finally中使用finally-block
我何时应该使用代码段A而不是代码段B(即使用代码段A的好处是什么)?:
片段A:
try { // codeblock A } catch (Exception ex) { // codeblock B } finally { //codeblock C }
代码片段B:
try { // codeblock A } catch (Exception ex) { // codeblock B } //codeblock C
如果您有必须执行的代码,请使用finally块,无论是否抛出exception。
清理数据库连接等稀缺资源就是一个很好的例子。
一个明显的例子是当你在catch
块中重新引发或抛出另一个exception时。
如果您需要进行一些清理,例如关闭数据库连接,这很有用。 因为“finally”总是被执行,所以你不需要在“try”结束时以及在一个或多个“catch”块中进行相同代码的容易出错的复制粘贴。
当您拥有需要在成功或错误方案中清理的资源时,您几乎总是必须使用带有finally块的代码段。 一个典型的例子是jdbc连接对象,它应该始终在finally块中关闭(清理)。
想象一下在catch
块中有一个return
语句: C块不会在片段B中执行,但在片段A中它会在返回之前执行。
- Spring MVC最佳实践处理控制器中不可恢复的exception
- 如何决定创建已检查的excpetion或未经检查的exception
- 带有Map和Hashtable的ConcurrentModificationexception
- Selenium偶尔会出现UnreachableBrowserException
- 为我的应用程序的所有线程定义一个全局UncaughtExceptionHandler
- 处理javaexception的最佳实践
- 处理ThreadPoolExecutor的exception
- JAX-WS Soap错误没有出现在WSDL中
- 如何使用Spring Data Rest和PagingAndSortingRepository处理exception?