Heim > Backend-Entwicklung > C++ > Wie kann ich Stack-Traces beim erneuten Auslösen von InnerExceptions in C# beibehalten?

Wie kann ich Stack-Traces beim erneuten Auslösen von InnerExceptions in C# beibehalten?

DDD
Freigeben: 2025-01-17 07:17:09
Original
808 Leute haben es durchsucht

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

Beibehalten der ursprünglichen Stapelspuren beim erneuten Auslösen innerer Ausnahmen in C#

Debugging und Fehlerbehebung werden erheblich schwieriger, wenn der ursprüngliche Stack-Trace beim erneuten Auslösen einer inneren Ausnahme in C# verloren geht. Glücklicherweise bietet die in .NET 4.5 eingeführte Klasse ExceptionDispatchInfo eine Lösung.

Die Lösung:

Um den vollständigen Stack-Trace beizubehalten, verwenden Sie ExceptionDispatchInfo wie folgt:

<code class="language-csharp">try
{
    task.Wait();
}
catch (AggregateException ex)
{
    ExceptionDispatchInfo.Capture(ex.InnerException).Throw();
}</code>
Nach dem Login kopieren

Erklärung:

ExceptionDispatchInfo erfasst die Ausnahme und ihren aktuellen Status, einschließlich der Stapelüberwachung, sodass Sie sie später erneut auslösen können, ohne diese Informationen zu ändern. Dies ist nicht auf AggregateException beschränkt; es funktioniert mit jedem Ausnahmetyp. Diese Funktion ist besonders nützlich mit dem Schlüsselwort await, das häufig innere Ausnahmen von AggregateException-Instanzen auspackt, um die Interoperabilität zwischen asynchronem und synchronem Code zu verbessern.

Das obige ist der detaillierte Inhalt vonWie kann ich Stack-Traces beim erneuten Auslösen von InnerExceptions in C# beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage