Maison > développement back-end > C++ > Comment puis-je conserver les traces de pile lors de la relance d'InnerExceptions en C# ?

Comment puis-je conserver les traces de pile lors de la relance d'InnerExceptions en C# ?

DDD
Libérer: 2025-01-17 07:17:09
original
808 Les gens l'ont consulté

How Can I Preserve Stack Traces When Rethrowing InnerExceptions in C#?

Conserver les traces de la pile d'origine tout en relançant les exceptions internes en C#

Le débogage et le dépannage deviennent beaucoup plus difficiles lorsque la trace de la pile d'origine est perdue lors de la nouvelle exécution d'une exception interne en C#. Heureusement, la classe ExceptionDispatchInfo, introduite dans .NET 4.5, apporte une solution.

La solution :

Pour conserver la trace complète de la pile, utilisez ExceptionDispatchInfo comme ceci :

<code class="language-csharp">try
{
    task.Wait();
}
catch (AggregateException ex)
{
    ExceptionDispatchInfo.Capture(ex.InnerException).Throw();
}</code>
Copier après la connexion

Explication :

ExceptionDispatchInfo capture l'exception et son état actuel, y compris la trace de la pile, vous permettant de la relancer plus tard sans modifier ces informations. Cela ne se limite pas à AggregateException ; cela fonctionne avec n'importe quel type d'exception. Cette fonctionnalité est particulièrement utile avec le mot-clé await, qui déballe souvent les exceptions internes des instances AggregateException pour une interopérabilité améliorée entre le code asynchrone et synchrone.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal