今天有一个精神障碍,需要一只手来验证我的逻辑没有被fubar'ed。
传统上我会做类似这样的文件 i/o:
FileStream fs = null; // So it's visible in the finally block
try
{
fs = File.Open("Foo.txt", FileMode.Open);
/// Do Stuff
}
catch(IOException)
{
/// Handle Stuff
}
finally
{
if (fs != null)
fs.Close();
}
但是,这不是很优雅。
理想情况下,我想在完成后使用该using
块来处理文件流,但是我不确定 using 和 try/catch 之间的协同作用。
这就是我想实现上述内容的方式:
try
{
using(FileStream fs = File.Open("Foo.txt", FileMode.Open))
{
/// Do Stuff
}
}
catch(Exception)
{
/// Handle Stuff
}
但是,我担心 using 块中的过早退出(通过抛出的异常)可能不允许 using 块完成执行并清理它的对象。我只是偏执狂,还是这实际上会按照我的意图进行?