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

    1.try和catch中有return时,finally先执行

     1 public class tryDemo {
     2     public static int show() {
     3         try {
     4             return 1;
     5         }finally{
     6             System.out.println("finally模块被执行");
     7         }
     8     }
     9     public static void main(String args[]) {
    10         System.out.println(show());
    11     }
    12 }
    13 ----------
    14 finally模块被执行
    15 1
    public class tryDemo {
        public static int show() {
            try {
                int a = 8/0;
                return 1;
            }catch (Exception e) {
                return 2;
            }finally{
                System.out.println("finally模块被执行");
            }
        }
        public static void main(String args[]) {
            System.out.println(show());
        }
    }
    ------------
    finally模块被执行
    2

    2.如果finally也有return,直接return

     1 public class tryDemo {
     2     public static int show() {
     3         try {
     4             int a = 8/0;
     5             return 1;
     6         }catch (Exception e) {
     7             return 2;
     8         }finally{
     9             System.out.println("finally模块被执行");
    10             return 0;
    11         }
    12     }
    13     public static void main(String args[]) {
    14         System.out.println(show());
    15     }
    16 }
    17 -------------
    18 finally模块被执行
    19 0

    3.finally中对于返回变量做的改变->会影响最终的返回结果

     1 public class Test {
     2     public Object show1() {
     3         Peo obj = new Peo();
     4         obj.setName("1");
     5         try {
     6             System.out.println(obj);
     7             return obj;
     8         } finally {
     9             System.out.println("finally模块被执行");
    10             obj.setName("2");
    11         }
    12     }
    13 
    14     public Object show2() {
    15         Peo obj = new Peo();
    16         obj.setName("1");
    17         try {
    18             System.out.println(obj);
    19             return obj;
    20         } finally {
    21             System.out.println("finally模块被执行");
    22             obj = null;
    23         }
    24     }
    25 
    26     public Object show3() {
    27         Peo obj = new Peo();
    28         obj.setName("1");
    29         try {
    30             System.out.println(obj);
    31             return obj;
    32         } finally {
    33             System.out.println("finally模块被执行");
    34             obj = null;
    35             return obj;
    36         }
    37     }
    38 
    39     public static void main(String args[]) {
    40         Test test = new Test();
    41         System.out.println(test.show1());
    42         System.out.println("*************");
    43         System.out.println(test.show2());
    44         System.out.println("*************");
    45         System.out.println(test.show3());
    46     }
    47 
    48     class Peo {
    49         String name;
    50 
    51         public void setName(String name) {
    52             this.name = name;
    53         }
    54 
    55         @Override
    56         public String toString() {
    57             return "Peo [name=" + name + "]";
    58         }
    59     }
    60 }
    61 --------------------
    62 Peo [name=1]
    63 finally模块被执行
    64 Peo [name=2]
    65 *************
    66 Peo [name=1]
    67 finally模块被执行
    68 Peo [name=1]
    69 *************
    70 Peo [name=1]
    71 finally模块被执行
    72 null
  • 相关阅读:
    那是什么进程 —— svchost.exe是什么? 它为何运行?
    共享一下我的博客皮肤
    C#3.0亮点 —— 关键字var和匿名类型
    改善代码设计 —— 优化物件之间的特性(Moving Features Between Objects)
    C#3.0亮点 —— 分部方法
    解决C#中一个"异步方法却同步执行"的问题
    改善代码设计 —— 简化函数调用(Making Method Calls Simpler)
    改善代码设计 —— 总结篇(Summary)
    理解A*寻路算法具体过程
    改善代码设计 —— 组织好你的数据(Composing Data)
  • 原文地址:https://www.cnblogs.com/yfzhou528/p/13509132.html
Copyright © 2011-2022 走看看