zoukankan      html  css  js  c++  java
  • finally回收资源

      Java中的垃圾回收机制,也就是GC不会回收任何物理资源,垃圾回收机制只回收堆内存中对象所占用的内存,所以其他的物理资源需要用finally来回收.

      如果try块中的某条语句引起了异常,该异常就会被catch块捕获,但是try块异常语句后面的其他语句通常不会获得执行机会,这将会导致该语句后的资源回收语句得不到执行,所以为了保证一定能回收try块中打开的物理资源,就要用到finally块.

      不管哪一个catch块被执行,甚至在try块中有continue/break/return连,finally块中的语句都一定会被执行.但是如果调用了退出虚拟机的方法(System.exit()),finally块就不会执行.

      异常处理结构中,try块后面必须要有catch/finally块,它们是充要条件,finally块必须位于所有的catch块的后面.另外不要再finally块中使用例如return/throw等导致方法终止的语句,一旦在finally块中使用了这些语句,就会导致try/catch块中的return/throw语句失效.

      当Java程序执行try/catch块的时候如果遇到了return/throw语句都会导致该方法立即结束,但是系统在执行这两个语句之前会去寻找异常处理流程中是否存在finally块,如果没有方法立即结束,否则会先执行finally块中的语句,只有当finally块中的语句执行完毕,才会返回try块中去执行return/throw语句;如果在finally块中也使用了return/throw等导致方法结束的语句,那么相当于是程序在finally块中就被终止了,系统将不会跳回try/catch块中.

      

  • 相关阅读:
    判断具有某个属性js、jQuery
    新建maven项目,JRE System Library[J2SE-1.5]
    maven多模块搭建
    The POM for * is invalid
    【react】react-bookManager
    【cml】wosi-demo
    关于白盒测试
    【weex】h5weex-example
    【weex】publishTask
    Eslint报错的翻译
  • 原文地址:https://www.cnblogs.com/maopao55555/p/6160830.html
Copyright © 2011-2022 走看看