C# fermer le flux et supprimer le fichier si quelque chose a échoué

Je suis en train de travailler avec un fichier de flux en C#. C'est un stockage de cache, de sorte que si quelque chose va mal écrit le fichier (données corrompues, ... ), j'ai besoin de supprimer le fichier et renvoyer l'exception pour signaler le problème. Je suis en train de penser sur la façon de mettre en œuvre de la meilleure façon. Ma première tenter a:

Stream fileStream = null;
try
{
    fileStream = new FileStream(GetStorageFile(),
        FileMode.Create, FileAccess.Write, FileShare.Write);
    //write the file ...
}
catch (Exception ex)
{
    //Close the stream first
    if (fileStream != null)
    {
      fileStream.Close();
    }
    //Delete the file
    File.Delete(GetStorageFile());
    //Re-throw exception
    throw;
}
finally
{
    //Close stream for the normal case
    if (fileStream != null)
    {
      fileStream.Close();
    }
}

Comme vous le verrez, si quelque chose va mal l'écriture du fichier, la fileStream sera fermée à deux reprises. Je sais qu'il fonctionne, mais je ne pense pas que c'est la meilleure mise en œuvre.

Je pense que je pourrais supprimer le finally bloc, et fermer le flux de données dans le try bloc, mais j'ai posté ici parce que vous les gars sont des experts et je veux entendre la voix d'un expert.

Merci d'avance.