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