我有以下C#代碼:控制流是不越過如果在try塊發生異常到最後塊的try-終於
public class Program
{
static void Main()
{
int i = 123;
string s = "Some string";
object obj = s;
try
{
// Invalid conversion;
i = (int)obj;
// The following statement is not run.
Console.WriteLine("WriteLine at the end of the try block.");
}
finally
{
Console.WriteLine("\n Finally Block executed !!!");
}
}
}
當一個異常發生程序崩潰,而不將控制傳遞給最終塊因爲它被理解爲finally塊必須被執行以釋放try塊中獲得的資源。
正如你可以看到從[這個小提琴(https://dotnetfiddle.net/wf8DN9),這是不正確的。提供一個演示你的問題的[mcve]。 –
是的,它會在dotnetfiddle上運行,但是當我在visual studio 2013上運行它時,它會拋出以下異常,而不會將控制權交給最終阻止,如同您的情況。未處理的異常:System.InvalidCastException:指定的轉換無效。 at exceptionHandling.Program.Main()in c:\ Users \ Kifayat \ Desktop \ Learn \ excepti onHandling \ exceptionHandling \ Program.cs:line 69 –
它仍然會執行它。你可能會看到的是,Visual Studio在未執行的異常中斷,這將在執行finally塊之前執行。再次點擊'運行',finally塊會執行。 –