zoukankan      html  css  js  c++  java
  • Java----finally

    1.无return语句的执行顺序

    try{
        //可能抛出异常
    }catch(Exception e){
        //捕获异常
    }finally{
        //不管有无异常都执行
    }

      finally内的代码不管有无异常都会执行,具体来说

    • 如果没有异常,在try代码块执行完毕后执行;
    • 如果有异常且被catch捕获,在catch代码块执行完毕后执行;
    • 如果有异常单没有catch捕获,在提交给上层调用者前执行;

    2.带有return的语句执行顺序

    • 如果在try或者cathc里面有return语句,finally没有return,则先执行finally代码块,然后进行return,但是finally并不能改变return的返回值;
    • 如果finally里面也有return,不仅会覆盖掉try和catch的返回值,并且掩盖try和catch的异常,如果finally里面也有异常,会原异常就会被覆盖掉;
    • 如果try中是System.exit(0),则finally不会被执行;
    • 如果try-finally所在的线程被杀死了,finally也不会被执行。

    3.注意

    • 不要在finally中使用return语句;
    • finally总是执行的,除非程序或者线程被中断了;
    • try-catch-finally中,catch并不是必须的,可以只有try-finally,表示的是异常向上传递。
    • 在JVM运行机制中:如果try语句块中有return,编译器会将return的内容先复制一份,然后在执行finally中的代码,查看是否有return,如果有,会忽略掉try中的return,没有的话,需要看对try中return的是引用类型还是基本类型 。(如果在finally中有操作try中返回的数据,那么引用类型数据会受到影响,基本类型不会受到影响。)

     参考:https://www.cnblogs.com/daixiaotian/p/6943904.html

    天助自助者
  • 相关阅读:
    实现一个微型数据库
    InstallShield 12 制作安装包
    .NET MVC学习笔记(一)
    递归和迭代的差别
    nginx 日志和监控
    c语言中的位移位操作
    Android应用程序绑定服务(bindService)的过程源码分析
    关于js中window.location.href,location.href,parent.location.href,top.location.href的使用方法
    iOS Crash 分析(文二)-崩溃日志组成
    js 字符串转换成数字的三种方法
  • 原文地址:https://www.cnblogs.com/ZeGod/p/9949362.html
Copyright © 2011-2022 走看看