異常發生時,執行將終止,同時將控制權交給最近的異常處理語句,這就意味著不能按正常的設計思想執行。而有些資源清理(如關閉文件)必須總是執行,即使有異常發生,為了實現該功能,可以使用finally塊。finally塊用於清除try塊中分配的任何資源,以及運行必須執行的代碼,即使在發生異常的情況下。控制將總是傳遞給finally塊,與try塊的退出方式無關。
示例 try-catch-finally語句的使用
本示例中有一個導致異常的無效轉換語句,當運行程序時,用戶會收到一條運行時錯誤信息,但finally子句仍繼續執行並顯示輸出。程序代碼如下。
using System;
public class MainClass
{
static void Main()
{
int i = 123;
string s = "Some string";
// http://www.bianceng.cn
object o = s;
try
{
i = (int)o;
}
catch { }
finally
{
Console.Write("i = {0}", i);
}
Console.Read();
}
}