無論是否存在異常,最後總是執行。如果你想絕對確定某些東西被清理了,這可能很方便。 Example:
void ReadFile(int index)
{
// To run this code, substitute a valid path from your local machine
string path = @"c:\users\public\test.txt";
System.IO.StreamReader file = new System.IO.StreamReader(path);
char[] buffer = new char[10];
try
{
file.ReadBlock(buffer, index, buffer.Length);
}
catch (System.IO.IOException e)
{
Console.WriteLine("Error reading from {0}. Message = {1}", path, e.Message);
}
finally
{
if (file != null)
{
file.Close();
}
}
// Do something with buffer...
}
如果您沒有在那裏有一個最終有可能的是,文件將不能正確,如果發生錯誤關閉。無論是否發生錯誤,您都希望文件在完成後關閉。
考慮替代方案:
void ReadFile(int index)
{
// To run this code, substitute a valid path from your local machine
string path = @"c:\users\public\test.txt";
System.IO.StreamReader file = new System.IO.StreamReader(path);
char[] buffer = new char[10];
try
{
file.ReadBlock(buffer, index, buffer.Length);
file.Close();
}
catch (System.IO.IOException e)
{
Console.WriteLine("Error reading from {0}. Message = {1}", path, e.Message);
}
}
如果您在ReadBlock
錯誤出來的文件將無法正確關閉。
你看看[try-catch-finally(C#Reference)](http://msdn.microsoft.com/en-us/library/vstudio/dszsf989.aspx)。一個簡單的谷歌搜索將回答你的問題。 – Harrison
是的,但不能得到我想要的 – Hunain