Disposables, Using & Try / Catch Blocks

enn Sie heute eine mentale Blockade haben, brauchen Sie eine Hand, um zu überprüfen, ob meine Logik nicht verklemmt is

Traditionell würde ich eine Datei erstellen, die ungefähr so aussieht:

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();
}

Allerdings ist das nicht sehr elegant.

Ideally Ich möchte das @ verwendusing Block, um den Dateistream zu entsorgen, wenn ich fertig bin. Allerdings bin ich mir nicht sicher, welche Synergien zwischen "using" und "try / catch" bestehen.

Dies ist, wie ich das oben genannte umsetzen möchte:

try
{
   using(FileStream fs = File.Open("Foo.txt", FileMode.Open))
   {
      /// Do Stuff
   }
}
catch(Exception)
{
   /// Handle Stuff
}

Ich bin jedoch besorgt, dass ein vorzeitiger Exit (über eine ausgelöste Ausnahme) aus dem using-Block möglicherweise nicht zulässt, dass der using-Block die Ausführung abschließt und sein Objekt bereinigt. Bin ich nur paranoid, oder funktioniert das tatsächlich so, wie ich es vorhabe?

Antworten auf die Frage(12)

Ihre Antwort auf die Frage