如果我在一个方法的 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 异常

相关文章:

  • 2022-02-08
  • 2022-12-23
  • 2022-12-23
  • 2021-09-10
  • 2021-10-29
  • 2022-12-23
  • 2021-08-30
猜你喜欢
  • 2021-11-09
  • 2022-12-23
  • 2021-11-15
  • 2021-06-04
  • 2022-12-23
  • 2021-10-03
  • 2021-11-06
相关资源
相似解决方案