任務中異常處理的最佳實踐
概述
在System.Threading 中System.Threading管理異常.Tasks.Task
C# 5.0 及更高版本
在 C# 5.0 及更高版本中,async 和 wait 簡化異常處理。非同步方法不使用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# 4.0及以下
對於早期版本的C#,ContinueWith提供了一個替代方法。透過指定TaskContinuationOptions.OnlyOnFaulted,您可以指定在任務發生故障時才應執行延續:
// Get the task. var task = Task.Factory.StartNew<StateObject>(() => { /* action */ }); // For error handling. task.ContinueWith(t => { /* error handling */ }, context, TaskContinuationOptions.OnlyOnFaulted);
多個延續
多重延續可以處理兩種異常並成功案例:
// For error handling. task.ContinueWith(t => { /* error handling */ }, context, TaskContinuationOptions.OnlyOnFaulted); // If it succeeded. task.ContinueWith(t => { /* on success */ }, context, TaskContinuationOptions.OnlyOnRanToCompletion);
統一異常處理的基類
在某些場景下,基類別可以提供跨多個類別的集中式異常處理機制。您的基底類別實作可以包含一個方法來管理對ContinueWith的呼叫中的異常。然而,與上述技術相比,這種方法可能沒有明顯的優勢,特別是在使用 async 和 wait 時。
遵循這些最佳實踐,您可以有效地處理任務中的異常,從而確保程式碼的穩定性和可靠性。
以上是如何最好地處理 C# 任務中的異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!