最后阻止
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
- 申请流程通常由外部来源杀死。