await
提供的程式碼示範了在不使用MyAsyncMethod()
的情況下呼叫非同步方法await
。這種做法會產生警告並可能消除異常。 本文提出了有效處理異常同時忽略非同步操作結果的解決方案。
方法一:ContinueWith
異常處理
此方法使用 ContinueWith
方法非同步管理來自 MyAsyncMethod()
:
<code class="language-csharp">MyAsyncMethod() .ContinueWith(t => Console.WriteLine(t.Exception), TaskContinuationOptions.OnlyOnFaulted);</code>
此程式碼片段將延續任務附加到 MyAsyncMethod()
。 如果 MyAsyncMethod()
引發異常,則會執行延續任務,並在單獨的執行緒上將異常詳細資訊寫入控制台。
方法二:await
和try-catch
進行精準異常管理
或者,利用 await
和 try-catch
區塊提供更細粒度的異常處理:
<code class="language-csharp">try { await MyAsyncMethod().ConfigureAwait(false); } catch (Exception ex) { Trace.WriteLine(ex); }</code>
此方法透過 try-catch
提供有針對性的異常處理。 ConfigureAwait(false)
防止異常被封送回原始上下文,從而允許當前執行緒繼續執行。
這兩種方法都可以確保在呼叫非同步方法而不等待其結果時的異常安全。選擇最適合您的特定需求和異常處理要求的方法。
以上是如何在不使用'await”的情況下安全地調用 C# 中的非同步方法並仍然處理異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!