zoukankan      html  css  js  c++  java
  • Finally-操作返回值

    Finally中操作返回值会出现一个问题?值没有被改变?

     1   static int M1()
     2         {
     3             int result = 100;
     4             try
     5             {
     6                 result = result + 1;
     7                 //======引发异常的代码==========
     8                 int x = 10, y = 0;
     9                 Console.WriteLine(x / y);
    10                 //======引发异常的代码==========
    11                 return result;
    12             }
    13             catch
    14             {
    15                 Console.WriteLine("catch被执行了");
    16                 result = result + 1;
    17                 return result;
    18             }
    19             finally
    20             {
    21                 Console.WriteLine("====finally被执行了=================");
    22                 result = result + 1;
    23             }
    24         }
    View Code

    结果是:

    为什么会这样呢?不是说finally中的代码无论如何都会被执行吗?那就要看编译器会对我们的代码做了什么?

    Reflector反编译的代码:  会把我们要返回的值在try-catch中操作之后赋给一个全局变量,并且返回。finally中也操作了num,但是没有赋值给num4。

     对于引用类型是怎样的呢?这个大家可以试试,我就不写了,比较基础

  • 相关阅读:
    thinkphp5ajax分頁&&搜索後分頁
    yii框架多文件上傳
    Redis:Linux安装与使用
    JSP使用Struts2标签库报错
    Dubbo:3
    Dubbo:1
    Dubbo:2
    zookeeper:master选举
    zookeeper:分布式锁简单实现(JavaApi)
    zookeeper:Curator操作节点
  • 原文地址:https://www.cnblogs.com/entclark/p/7598567.html
Copyright © 2011-2022 走看看