2hk三元九运,九紫离火运-九紫运

#编程2hk三元九运,九紫离火运-九紫运

C#中Try-Catch语句大家都很熟悉了,但是细究起来,还是有很多东西可讲的。最近在翻看之前总结的常见面试题中,发现关于try...catch异常处理的还是蛮多了,今天看到这个面试题,也就重新学习一下。2hk三元九运,九紫离火运-九紫运

try..catch语法2hk三元九运,九紫离火运-九紫运

 try-catch语句由一个try块后跟一个或多个catch子句构成,这些子句制定不同的异常处理程序。2hk三元九运,九紫离火运-九紫运

引发异常时,公共语言运行时(CLR)会查找处理此异常的catch语句。如果当前执行的方法不包含这样的catch块,则CLR会查看调用当前方法的方法,然后会遍历叠用堆栈。如果找不到catch块,则CLR会向用户显示一天有关未处理的异常的消息并停止执行程序。2hk三元九运,九紫离火运-九紫运

try块包含可能导致异常的保护代码。该块一直执行到引发异常或成功完成为止。2hk三元九运,九紫离火运-九紫运

try-catch的基本语法如上面所述,try-catch的执行顺序是:try块中的代码执行出现异常将执行catch块中的代码,如果try块中的执行没有错误,将try块中的代码执行完,不会执行catch块中的语句。2hk三元九运,九紫离火运-九紫运

try-catch-finally:不管是否有异常,finally块中的代码都会执行,finally块常用于资源的释放等。2hk三元九运,九紫离火运-九紫运

第一种:值类型的2hk三元九运,九紫离火运-九紫运

代码示例:2hk三元九运,九紫离火运-九紫运

static int GetResult()2hk三元九运,九紫离火运-九紫运

    {2hk三元九运,九紫离火运-九紫运

        int a = 1;2hk三元九运,九紫离火运-九紫运

        int b = 2;2hk三元九运,九紫离火运-九紫运

        int n = 1;2hk三元九运,九紫离火运-九紫运

        try2hk三元九运,九紫离火运-九紫运

        {2hk三元九运,九紫离火运-九紫运

            int k = a / b;2hk三元九运,九紫离火运-九紫运

            return n;2hk三元九运,九紫离火运-九紫运

        }2hk三元九运,九紫离火运-九紫运

        catch (Exception ex)2hk三元九运,九紫离火运-九紫运

        {2hk三元九运,九紫离火运-九紫运


2hk三元九运,九紫离火运-九紫运

            Console.WriteLine(ex.Message);2hk三元九运,九紫离火运-九紫运

            throw;2hk三元九运,九紫离火运-九紫运

        }2hk三元九运,九紫离火运-九紫运

        finally//不管有没有发生异常 finally都会执行2hk三元九运,九紫离火运-九紫运

        {2hk三元九运,九紫离火运-九紫运

            n++;2hk三元九运,九紫离火运-九紫运

        }2hk三元九运,九紫离火运-九紫运

    }2hk三元九运,九紫离火运-九紫运

可能你已经知道结果了:1,为什么呢?咱们可以看看反编译的代码,你就会清楚为什么了。2hk三元九运,九紫离火运-九紫运

2hk三元九运,九紫离火运-九紫运

第二种:引用类型的2hk三元九运,九紫离火运-九紫运

代码示例:
2hk三元九运,九紫离火运-九紫运

tatic Person GetResult()2hk三元九运,九紫离火运-九紫运

    {2hk三元九运,九紫离火运-九紫运

        int a = 1;2hk三元九运,九紫离火运-九紫运

        int b = 2;2hk三元九运,九紫离火运-九紫运

        Person p = new Person();2hk三元九运,九紫离火运-九紫运

        p.Age = 1;2hk三元九运,九紫离火运-九紫运

        try2hk三元九运,九紫离火运-九紫运

        {2hk三元九运,九紫离火运-九紫运

            int k = a / b;2hk三元九运,九紫离火运-九紫运

            return p;2hk三元九运,九紫离火运-九紫运

        }2hk三元九运,九紫离火运-九紫运

        catch (Exception ex)2hk三元九运,九紫离火运-九紫运

        {2hk三元九运,九紫离火运-九紫运


2hk三元九运,九紫离火运-九紫运

            Console.WriteLine(ex.Message);2hk三元九运,九紫离火运-九紫运

            throw;2hk三元九运,九紫离火运-九紫运

        }2hk三元九运,九紫离火运-九紫运

        finally//不管有没有发生异常 finally都会执行2hk三元九运,九紫离火运-九紫运

        {2hk三元九运,九紫离火运-九紫运

            p.Age++;2hk三元九运,九紫离火运-九紫运

        }2hk三元九运,九紫离火运-九紫运

    }2hk三元九运,九紫离火运-九紫运

那么返回的这个person的age是多少呢?先看反编译的结果:2hk三元九运,九紫离火运-九紫运

2hk三元九运,九紫离火运-九紫运

2hk三元九运,九紫离火运-九紫运

结果为:22hk三元九运,九紫离火运-九紫运

2hk三元九运,九紫离火运-九紫运

2hk三元九运,九紫离火运-九紫运

声明:有的资源均来自网络转载,版权归原作者所有,如有侵犯到您的权益 请联系邮箱:123456@qq.com 我们将配合处理!

原文地址:C#中try catch finally的执行顺序发布于2024-04-01 12:02:40