Avoir un bloc mental aujourd'hui, besoin d'une main vérifiant ma logique n'est pas fubar'ed.Disposables, en utilisant & Try/Catch Blocks
Traditionnellement je ferais fichier i/o semblable à ceci:
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();
}
Cependant, ce n'est pas très élégant.
Idéalement, je voudrais utiliser le bloc using
pour disposer du flux de fichiers lorsque j'ai terminé, mais je ne suis pas sûr de la synergie entre l'utilisation et try/catch.
Voilà comment je voudrais mettre en œuvre ce qui précède:
try
{
using(FileStream fs = File.Open("Foo.txt", FileMode.Open))
{
/// Do Stuff
}
}
catch(Exception)
{
/// Handle Stuff
}
Cependant, je suis inquiet qu'une sortie prématurée (par exception levée) à l'intérieur du bloc à l'aide ne peut pas permettre au bloc à l'aide de terminer l'exécution et nettoyer son objet. Suis-je simplement paranoïaque, ou est-ce que cela fonctionnera comme je le souhaite?