Maison > développement back-end > C++ > Comment puis-je relancer les exceptions internes en C# tout en préservant la trace de la pile ?

Comment puis-je relancer les exceptions internes en C# tout en préservant la trace de la pile ?

Barbara Streisand
Libérer: 2025-01-17 07:21:10
original
987 Les gens l'ont consulté

How Can I Rethrow Inner Exceptions in C# While Preserving the Stack Trace?

Relancez l'exception interne en C# et préservez la trace de la pile

Dans les scénarios où les exceptions imbriquées sont interceptées via la réflexion, la nouvelle émission de l'exception interne peut entraîner la perte des informations de trace de la pile. Pour surmonter ce problème, une solution efficace consiste à utiliser la classe ExceptionDispatchInfo introduite dans .NET 4.5.

Utilisez ExceptionDispatchInfo pour conserver les traces de pile

ExceptionDispatchInfo permet d'intercepter une exception et de la relancer sans modifier la trace de la pile. Voici un exemple :

<code class="language-csharp">using ExceptionDispatchInfo = 
    System.Runtime.ExceptionServices.ExceptionDispatchInfo;

try
{
    // 可能抛出异常的代码
}
catch (Exception ex)
{
    ExceptionDispatchInfo.Capture(ex).Throw();
}</code>
Copier après la connexion

En utilisant ExceptionDispatchInfo, les exceptions internes peuvent être renvoyées tout en conservant leur trace de pile d'origine. Cette méthode fonctionne avec n'importe quel type d'exception, sans se limiter à AggregateException.

Introduit pour la fonctionnalité asynchrone

La classe ExceptionDispatchInfo est principalement utilisée pour gérer les exceptions dans les opérations asynchrones. En particulier, la fonctionnalité du langage wait C# déballe les exceptions internes des instances AggregateException, ce qui peut prêter à confusion dans la programmation asynchrone. ExceptionDispatchInfo conserve efficacement les traces de la pile d'exceptions dans de tels scénarios.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal