在非同步程式設計領域,有效管理異常至關重要。使用 System.Threading.Tasks.Task
C# 5.0 及更高版本:Async 和Await 來救援
C# 5.0 及更高版本引入了革命性的async 和wait 關鍵字,為異常處理提供了簡化的解決方案。這些關鍵字允許您以線性方式編寫程式碼,而編譯器將其轉換為使用任務和非同步程式設計模式。
要採用此方法,只需將程式碼包裝在指定方法內的 try-catch 區塊中async 關鍵字。
try { // Start the task. var task = Task.Factory.StartNew<StateObject>(() => { /* action */ }); // Await the task. await task; } catch (Exception e) { // Perform cleanup here. }
C# 4.0 及以下版本: TaskContinuationOptions
對於早期版本的 C#,我們可以利用從 TaskContinuationOptions 列舉接受參數的 ContinueWith 重載。這允許我們指定延續任務的執行條件。
具體來說,使用 OnlyOnFaulted 選項可確保僅在先行任務拋出異常時才執行延續任務。
// Get the task. var task = Task.Factory.StartNew<StateObject>(() => { /* action */ }); // For error handling. task.ContinueWith(t => { /* error handling */ }, context, TaskContinuationOptions.OnlyOnFaulted);
處理非異常情況
處理在 C# 4.0 及更低版本中,我們可以為同一個先行任務建立多個ContinueWith 任務。例如,我們可以有一個在成功完成後執行的任務:
// Get the task. var task = new Task<StateObject>(() => { /* action */ }); // For error handling. task.ContinueWith(t => { /* error handling */ }, context, TaskContinuationOptions.OnlyOnFaulted); // If it succeeded. task.ContinueWith(t => { /* on success */ }, context, TaskContinuationOptions.OnlyOnRanToCompletion); // Run task. task.Start();
以上是如何有效處理C#任務異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!