我寫了一個簡單的程序來測試一個理論,即「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