最后阻止

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.
}

试块必须跟随 catchfinally 块。但是,由于没有 catch 块,执行将导致终止。在终止之前,将执行 finally 块内的语句。

在文件阅读中我们可以使用 using 块作为 FileStream(什么 OpenRead 返回)实现 IDisposable

即使在 try 块中存在 return 语句,finally 块通常也会执行; 有几种情况不会: