为什么行“Console.WriteLine(” asdf“);”被执行?所有其他的都是。难道不是因为我们不能从final范围跳出来吗?
static bool Func()
{
try
{
try
{
}
finally
{
try
{
throw new ApplicationException();
}
finally
{
Console.WriteLine("asd");
}
Console.WriteLine("asdf");
}
}
finally
{
Console.WriteLine("asd");
}
}
最佳答案
最后,仅在尝试块引发异常的情况下才保证(至少主要是保证,请参见下面的MSDN摘录)它们将被输入。如果在fint块中抛出异常,则该异常将导致控件离开finally块,并且该finally块中的其余代码将不执行。
在您的情况下,未执行的行发生在同一finally块中的异常之后,因此将被跳过。
从MSDN - try-finally:
注意:Unhandled Exception Processing in the CLR是对《 MSDN杂志》 2008年9月号中的文章的引用。 《 MSDN杂志》的所有2008年及更早版本均仅以.chm文件形式提供,在查看之前需要先下载。
关于c# - 最后嵌套在C#中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11039591/