タスクでの例外処理のベスト プラクティス
概要
System.Threading での例外の管理.Tasks.Task
C# 5.0 以降
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# 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);
複数の継続
複数の継続は両方の例外を処理できます。そして成功したcase:
// For error handling. task.ContinueWith(t => { /* error handling */ }, context, TaskContinuationOptions.OnlyOnFaulted); // If it succeeded. task.ContinueWith(t => { /* on success */ }, context, TaskContinuationOptions.OnlyOnRanToCompletion);
統合例外処理の基本クラス
一部のシナリオでは、基本クラスは、複数のクラスにわたる例外処理のための集中メカニズムを提供できます。基本クラスの実装には、ContinueWith の呼び出し内の例外を管理するメソッドを含めることができます。ただし、このアプローチは、特に async と await を使用する場合、前述の手法に比べて大きな利点が得られない可能性があります。
これらのベスト プラクティスに従うことで、タスクの例外を効果的に処理し、コードの安定性と信頼性を確保できます。
以上がC# タスクで例外を最適に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。