Parfois, lorsqu'une exception se produit sur une méthode de classe .NET, cette méthode est elle-même en interne appelant un tas d'autres méthodes, mais l'erreur se produit dans l'un des ceux-ci. Cela donne une trace de pile gonflée et désordonnée avec des choses plus "insignifiantes" que nécessaire. Existe-t-il un moyen d'obtenir une trace de pile qui s'arrête à la méthode publique .NET qui a provoqué l'erreur par rapport à l'affichage de tous les composants internes des méthodes .NET?Peut-on générer une trace de pile .NET qui exclut les méthodes internes?
Un exemple serait ExecuteNonQuery() de ADO.NET. En interne, cela appelle 5-6 fonctions et l'exception ne peut pas arriver avant cette 6e fonction imbriquée et donc la trace de la pile montre tous ces internes dont nous ne pouvons rien faire. Ce serait gentil et plus propre s'il s'arrêtait à ExecuteNonQuery() puisque c'est la méthode .NET publique.
Y a-t-il des raisons pratiques? Vous pouvez attraper et rejeter, mais pourquoi? – Sinatr
Etes-vous sûr que les noms de méthodes internes sont inutiles? Par exemple. si 'ExecuteNonQuery' lance une' NullReferenceException', où commencez-vous à chercher? Par contre, si les noms de méthodes internes incluent le mot 'Paramètre', cela ne vous aide-t-il pas à zoomer plus rapidement sur l'endroit où vous devriez chercher? –
Vous pouvez créer une classe d'exception personnalisée et filtrer les choses que vous ne voulez pas dans la trace de la pile. – PaulF