在C#中,finally 块是用于执行无论是否发生异常都必须执行的代码块。finally 块通常用于释放资源、清理操作或确保特定代码在异常发生时也能正确执行。
try
{
// 可能引发异常的代码
}
catch (Exception ex)
{
// 处理异常
}
finally
{
// 无论是否发生异常,都会执行的代码
}
FileStream fileStream = null;
try
{
fileStream = new FileStream("file.txt", FileMode.Open);
// 使用文件流进行一些操作
}
catch (IOException ex)
{
// 处理IO异常
}
finally
{
// 确保文件流总是被关闭释放
if (fileStream != null)
{
fileStream.Close();
}
}
// 使用using语句释放资源
using (FileStream fileStream = new FileStream("file.txt", FileMode.Open))
{
// 使用文件流进行一些操作
}
// 在using块结束时,文件流会自动调用Dispose方法进行释放
// 使用finally块释放资源
FileStream fileStream = null;
try
{
fileStream = new FileStream("file.txt", FileMode.Open);
// 使用文件流进行一些操作
}
catch (IOException ex)
{
// 处理IO异常
}
finally
{
// 确保文件流总是被关闭释放
if (fileStream != null)
{
fileStream.Close();
}
}
// 使用using语句释放资源
try
{
using (FileStream fileStream = new FileStream("file.txt", FileMode.Open))
{
// 使用文件流进行一些操作
}
// 在using块结束时,文件流会自动调用Dispose方法进行释放
}
catch (IOException ex)
{
// 处理IO异常
}
在以上示例中,finally 块用于确保在使用 FileStream 操作文件时,无论是否发生异常,文件流都会被关闭释放。另外,使用 using 语句可以简化资源的释放,无需手动编写 finally 块,因为 using 语句会自动调用对象的 Dispose 方法。