使用 Task
在 C# 5.0 及更高版本中,async 和 await 關鍵字簡化基於任務的程式設計顯著。非同步方法不依賴ContinueWith,而是允許您直接使用try/catch區塊來處理異常:
try { // Start the task. var task = Task.Factory.StartNew<StateObject>(() => { /* action */ }); // Await the task. await task; } catch (Exception e) { // Perform cleanup here. }
對於舊版本的C#, TaskContinuationOptions 枚舉的ContinueWith重載可以是used:
// Get the task. var task = Task.Factory.StartNew<StateObject>(() => { /* action */ }); // For error handling. task.ContinueWith(t => { /* error handling */ }, context, TaskContinuationOptions.OnlyOnFaulted);
OnlyOnFaulted 確保僅當先行任務拋出異常時才執行延續。可以連結多個延續來處理不同的情況:
// For error handling. task.ContinueWith(t => { /* error handling */ }, context, TaskContinuationOptions.OnlyOnFaulted); // If it succeeded. task.ContinueWith(t => { /* on success */ }, context, TaskContinuationOptions.OnlyOnRanToCompletion);
無論您選擇async/await 方法還是使用TaskContinuationOptions 技術的ContinueWith,這些方法都使您能夠有效捕獲C# 任務中的異常,確保您的應用程式處理優雅地出現意外錯誤。
以上是如何處理C#任務中的異常(Async/Await和ContinueWith)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!