Utiliser des instructions et try-catch () - enfin la répétition?

L'aide de(...) déclaration est sucre syntaxique pour try{} finally {}.

Mais si j'ai ensuite à l'aide d'instruction comme ci-dessous:

using (FileStream fs = File.Open(path))
{


}

Maintenant, je veux attraper les exceptions que l'ouverture de ce fichier pourrait causer (et c'est assez haut risque code qu'elle peut échouer en raison de l'environnement), mais si j'écris try-catch à l'intérieur ne serait-ce pas la répétition? Lorsque le code est compilé à l'IL, je suppose que la répétition sera effacé lorsque le code est JITted?

Cependant, je tiens à intercepter les exceptions de l'ouverture d'un fichier peut provoquer (je devrais donc envelopper le try-catch à l'extérieur de l'instruction à l'aide du champ d'application), et également les exceptions pour ce que je fais à l'intérieur de la à l'aide de bloc de sorte que je dois ajouter le try-catch à l'intérieur du bloc.

Il semble que je suis en ajoutant beaucoup de répétition à ce que le CLR probablement à l'intérieur. Le CLR ajouter des clauses catch?

Mon collègue a fait valoir qu'à l'aide d'instruction est en désordre (mais c'est parce qu'une seule ligne a été un peu long en raison de m'codage en dur des que j'en ai besoin de les changer très rapidement et n'ont pas accès à d'autres parties de la base de code). Dit collègue ne pas utiliser l'instruction à l'aide, mais est-il jamais aucune différence fonctionnelle entre l'instruction d'utilisation et essayez-enfin/try-catch-finally? J'ai vu un cas de ce où les services WCF ont un pas bien connu des cas de coin sur l'utilisation de enfin et le retour des valeurs de (quelque chose finalement). La solution a été d'utiliser une case à bloc. Est-il quelque chose comme cela en C#?

Sur une autre note, sont tous les types qui mettent en œuvre IDisposale propriétaires de ressources non managées? Une discussion avec mon ami de relever la réponse à pas. (J'ai aussi lu quelques discussions dans la section de ce forum, une très bonne connaissance).

source d'informationauteur dotnetdev