zoukankan      html  css  js  c++  java
  • try catch finally与return的执行顺序

    测试1:
        public static int test1()
        {
            int i = 1;
            try
            {
                return ++i;
            }
            finally
            {
                ++i;
                Console.WriteLine("finally:" + i);
            }
        }

        static void Main(string[] args)
        {
            Console.WriteLine("Main:" + test1());
        }
    结果:
    finally:3
    Main:2


    测试2:
        public static int test2()
        {
            int i = 1;
            try
            {
                throw new Exception();
            }
            catch
            {
                return ++i;
            }
            finally
            {
                ++i;
                Console.WriteLine("finally:" + i);
            }
        }

        static void Main(string[] args)
        {
            Console.WriteLine("Main:" + test2());
        }
    结果:
    finally:3
    Main:2


    测试3:
        public static int test3()
        {
            try{}
            finally
            {
                return 1;
            }
        }

    结果:
    编译错误,控制不能离开 finally 子句主体。


    结论:

    1.不管出没出现异常,finally块中的语句都会执行;
    2.当try或catch块中有return语句时,finally块中的语句仍会执行;
    3.finally块中的语句是在函数返回前执行的,但函数返回值是在finally块中语句执行前确定的;
    4.finally块中不能包含return语句。

  • 相关阅读:
    fedora/centos7防火墙FirewallD详解
    python for dl
    神经网络画图工具
    卷积神经网络的复杂度分析
    如何理解深度学习中的Transposed Convolution?
    吴恩达课程及视频笔记汇总
    从LeNet-5到DenseNet
    WPS for Linux
    caffe:fine-tuning
    python下图像读取方式以及效率对比
  • 原文地址:https://www.cnblogs.com/chenwx/p/1425629.html
Copyright © 2011-2022 走看看