在 C# 中重新拋出內部異常時保持原始堆疊追蹤
當在 C# 中重新拋出內部異常時原始堆疊追蹤遺失時,偵錯和故障排除變得更加困難。 幸運的是,.NET 4.5 中引入的 ExceptionDispatchInfo
類別提供了解決方案。
解:
要保留完整的堆疊跟踪,請像這樣使用 ExceptionDispatchInfo
:
<code class="language-csharp">try { task.Wait(); } catch (AggregateException ex) { ExceptionDispatchInfo.Capture(ex.InnerException).Throw(); }</code>
說明:
ExceptionDispatchInfo
捕獲異常及其當前狀態,包括堆疊跟踪,允許您稍後重新拋出它而不更改此資訊。 這不限於AggregateException
;它適用於任何異常類型。 此功能對於 await
關鍵字特別有用,它通常會從 AggregateException
實例中解開內部異常,以提高非同步和同步程式碼之間的互通性。
以上是在 C# 中重新拋出 InnerException 時如何保留堆疊追蹤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!