今天有一個心理障礙,需要一個手來驗證我的邏輯沒有被fubar化。一次性使用&使用&try/catch塊
傳統,我會做文件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
塊來處理文件流,但我不確定使用和try/catch之間的協同作用。
這是怎麼了,我想實現以上:
try
{
using(FileStream fs = File.Open("Foo.txt", FileMode.Open))
{
/// Do Stuff
}
}
catch(Exception)
{
/// Handle Stuff
}
但是,我擔心在使用塊中的過早退出(拋出通過除外)可能不允許使用塊完成執行並清理它的對象。我只是偏執狂,還是會按照我的意圖行事?