最後阻止
try
{
/* code that could throw an exception */
}
catch (Exception)
{
/* handle the exception */
}
finally
{
/* Code that will be executed, regardless if an exception was thrown / caught or not */
}
從檔案中讀取時,try / catch / finally
塊非常方便。
例如:
FileStream f = null;
try
{
f = File.OpenRead("file.txt");
/* process the file here */
}
finally
{
f?.Close(); // f may be null, so use the null conditional operator.
}
試塊必須跟隨 catch
或 finally
塊。但是,由於沒有 catch 塊,執行將導致終止。在終止之前,將執行 finally 塊內的語句。
在檔案閱讀中我們可以使用 using
塊作為 FileStream
(什麼 OpenRead
返回)實現 IDisposable
。
即使在 try
塊中存在 return
語句,finally
塊通常也會執行; 有幾種情況不會:
- 當 StackOverflow 的發生 。
Environment.FailFast
- 申請流程通常由外部來源殺死。