我写了一个简单的程序来测试一个理论,即“finally”块将总是执行,无论如何。 但是,我从下面的pgm看到的是,控制似乎永远不会进入外部的finaly块。当内部“catch”抛出时,为什么外层“finally”没有被执行?
我试图做F5和Ctrl-F5在Visual Studio中,它是相同的结果。
有人可以解释为什么我看到这种行为?
输出控制台窗口上是:
内抓住
内最后
外抓
未处理exeption:
..和然后应用程序崩溃
public class Program
{
static void Main()
{
try
{
try
{
string s = null;
s.ToString();
}
catch
{
Console.WriteLine("inner catch");
throw;
}
finally
{
Console.WriteLine("inner finally");
}
return;
}
catch
{
Console.WriteLine("outer catch");
throw;
}
finally
{
Console.WriteLine("outer finally");
}
}
}
哦,好的。点击取消确实会使“外部终于:声明”显示出来,很高兴知道这一点,谢谢 – user330612 2012-03-23 01:07:25