try-finally (C# 參考)
更新:2007 年 11 月
finally 區塊對於清除 try 區塊中配置的任何資源,以及執行即使有例外狀況也必須執行的任何程式碼十分有用。不論 try 區塊如何結束,程式控制權最後都轉移到 finally 區塊。
就像 catch 是用來處理陳述式區塊中所發生的例外狀況一樣,finally 也是用來保證某一陳述式區塊的程式碼一定會執行,無論前一個 try 區塊如何結束都不會影響。
範例
在這個範例中,有一個造成例外狀況的無效轉換陳述式。當您執行程式時,將得到執行階段錯誤訊息,但是 finally 子句仍會執行並且顯示輸出。
public class ThrowTest
{
static void Main()
{
int i = 123;
string s = "Some string";
object o = s;
try
{
// Invalid conversion; o contains a string not an int
i = (int)o;
}
finally
{
Console.Write("i = {0}", i);
}
}
}
上述範例會導致擲回 System.InvalidCastException。
雖然已經攔截到例外狀況,但是仍然會執行包含於 finally 區塊內的輸出陳述式,也就是:
i = 123
如需 finally 的詳細資訊,請參閱 try-catch-finally。
C# 也提供了 using 陳述式,以提供功能與 try-finally 陳述式相同的方便語法。
C# 語言規格
如需詳細資料,請參閱 C# 語言規格中的下列章節:
5.3.3.14 Try-finally 陳述式
8.11 try 陳述式
16 例外狀況
請參閱
工作
概念
參考
The try, catch, and throw Statements