Одноразовые, использующие & Try / Catch Blocks
Имея ментальный блок сегодня, нужна рука, проверяющая мою логику, не fubar'ed.
Традиционно я бы сделал файл ввода-вывода похожим на это:
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
}
Однако я обеспокоен тем, что преждевременный выход (через выброшенное исключение) из блока using может не позволить блоку using завершить выполнение и очистить его объект. Я просто параноик, или это действительно сработает так, как я намереваюсь?