zoukankan      html  css  js  c++  java
  • dotnet C# 在 finally 抛异常会发生什么

    如果我在一个方法的 finally 里面抛出异常,而在 try 里面也抛出,那在上层拿到的是什么

    如下面代码

            private void F1()
            {
                try
                {
                    A();
                }
                catch (Exception e)
                {
                    
                }
            }
    
            private void A()
            {
                try
                {
                    throw new ArgumentException("lindexi is doubi");
                }
                finally
                {
                    throw new FileNotFoundException("lsj is doubi");
                }
            }
    

    请问在 F1 的 catch 里面收到的 e 是什么类型,会触发几次?

    试试上面的代码,可以看到其实在进入 try 时,抛出 ArgumentException 不会立刻返回到 F1 方法里面,而是会继续执行 finally 方法

    在 finally 抛出的 FileNotFoundException 将会替换掉 ArgumentException 抛给了 F1 方法里面

    所以答案就是在 F1 的 catch 方法,只会被触发一次,这一次的 e 就是在 finally 抛出的 FileNotFoundException 异常

    博客园博客只做备份,博客发布就不再更新,如果想看最新博客,请到 https://blog.lindexi.com/

    知识共享许可协议
    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名[林德熙](http://blog.csdn.net/lindexi_gd)(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我[联系](mailto:lindexi_gd@163.com)。
  • 相关阅读:
    css 样式表的书写顺序
    强大的动画插件。
    百叶窗特效(用move.js库)
    jq基础
    js动态控制表单表格
    js事件对象
    js事件
    js_DOM操作
    小明年龄、成绩、名次的求解问题
    如何获取亿图中的高质量图片?
  • 原文地址:https://www.cnblogs.com/lindexi/p/14897247.html
Copyright © 2011-2022 走看看