56 votes

Recherche des exceptions qu'une méthode peut générer en C #

Existe-t-il un moyen de savoir quelles exceptions pourraient être levées par une méthode dans le code .NET? Idéalement, je veux voir ce qui pourrait être jeté et choisir ceux que je veux gérer. Je suppose que je veux les informations que vous obtiendriez de la clause throws en java.

La situation est que je fais une requête linq sur un document XML à partir du réseau et je veux savoir ce qui pourrait mal tourner. Je pourrais ouvrir l’ensemble dans le réflecteur et jeter un coup d’œil, mais j’ai pensé qu’il pourrait y avoir un moyen plus facile.

43voto

Marc Gravell Points 482669

.NET n'a pas d'application ("checked") des exceptions comme le java. L'intellisense peut montrer cette information, si le développeur a ajouté une /// <exception.../> bloc - mais en fin de compte plus d'exceptions peut arriver que vous attendez (OutOfMemoryException, ThreadAbortException, TypeLoadException,, etc peuvent tous être assez imprévisible).

En général, vous devriez avoir une idée de ce que les choses sont susceptibles de se tromper, et ceux que vous pouvez réellement faire quelque chose d'utile. Dans la plupart des cas, le comportement correct est de laisser l'exception de la bulle en haut (juste en cours d'exécution tout "enfin" code de libérer des ressources).

Eric Lippert a un bon blog sur ce sujet ici.

8voto

reshefm Points 1719

Je pense qu'Exception Hunter peut fournir ces informations, mais cela coûte de l'argent ...

3voto

Steve Sheldon Points 2398

Après avoir lu un autre article à ce sujet sur StackOverflow, j’ai construit au-dessus de cette autre réponse pour écrire un outil permettant de le faire, vous pouvez obtenir le code source de GitHub ici:

Réflecteur d'exception

vous pouvez aussi en lire plus ici:

http://steves-rv-travels.com/archives/167

0voto

OregonGhost Points 16615

Tant que vous utilisez des classes BCL, elles sont toutes complètement documentées et Intellisense affiche donc toutes les exceptions qu'une méthode peut générer. À part ça (et la lecture de la documentation), je pense qu'il n'y a pas moyen.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X