C# 来自块执行流的意外输出

C# 来自块执行流的意外输出,c#,C#,这是我编写的示例代码,用于理解输出和finally块的执行方式: public static void finallyBlockExecution(int num) { try { if (num != 14) { Console.WriteLine("num is {0}", num); exceptionMethod(++num); } } finally

这是我编写的示例代码,用于理解输出和finally块的执行方式:

public static void finallyBlockExecution(int num)
{
    try
    {
        if (num != 14)
        {
            Console.WriteLine("num is {0}", num);
            exceptionMethod(++num);
        }
    }
    finally
    {
        Console.WriteLine("Finally executed.. {0}", num);
    }
}
当我像这样调用方法时:
ClassA.finallyBlockExecution(10)
输出为:

num is 10
num is 11
num is 12
num is 13
finally executed.. 14
finally executed.. 14
finally executed.. 13
finally executed.. 12
finally executed.. 11

我知道
finally
将执行5次,但我无法理解为什么它会打印14次。

当程序流到达try块时,如果定义了finally块,则finally块在任何情况下都将始终执行。方法不能在不执行finally块的情况下返回。这就是“最终执行”的原因。。14'打印两次。假设我们有下面的代码块

 public int DoSomeCalculation()
 {
   int a=0;
   try
   {
     //perform some calculations
     return a;
   }
   catch(Exception ex)
   {
    return -1;
   }
   finally
   {
   Console.WriteLine("Do some cleanup");
   }
  }

在这里,无论方法从try还是catch块返回,都将执行finally块

请显示调用此方法的代码{static void Main(string[]args){.exceptionMethod(10);}}}该方法是在类B中定义的