zoukankan      html  css  js  c++  java
  • finally 与 return

    finally关键字:和try块使用,一般做资源释放操作,比如关闭流、关闭数据库连接,释放锁。

    return:用于返回值。

    finally块可保证一定执行,当逻辑处理有返回值时,会首先执行finally再执行return返回值。看这个规律我们可以推断如下代码的执行顺序为:

    test1

    finally

    1     public static int test1(){
    2         int i = 0;
    3         try{
    4             System.out.println("test1"); //1
    5             return i;
    6         }finally {
    7             System.out.println("finally"); //2
    8         }
    9     }

    再看如下代码执行顺序是怎样的

     1   public static int test1(){
     2         int i = 0;
     3         try{
     4             System.out.println("test1"); //1
     5         }finally {
     6             System.out.println("finally"); //2
     7         }
     8         System.out.println("finally behind"); //3
     9         return i;
    10     }

    经过测试结果为 test1、 finally、 finally behind . 

    在测试该段代码之前根据我之前了解的判断执行顺序应该是132,这是错误的。所以我们需要注意这种写法的执行顺序。正确的结果是123。这一点在使用同步代码的时候一定要注意 。主要在finally中使用lock.unlock方法时,return要写在try中,避免return前已经释放锁,将数据暴露给了其它任务。

  • 相关阅读:
    数据库被黑后留下的数据
    cron(CronTrigger)表达式用法
    nodeJS常用的定时执行任务的插件
    css实现隐藏滚动条
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
  • 原文地址:https://www.cnblogs.com/blacksonny/p/6149625.html
Copyright © 2011-2022 走看看