System.Threading.Tasks.Task
async および await キーワードの導入により、タスクでの例外処理は次のようになります。大幅にシンプルになります。次のように、非同期メソッド内で try-catch ブロックを使用して例外をキャッチできます。
try { var task = Task.Factory.StartNew<StateObject>(() => { /* action */ }); await task; } catch (Exception e) { // Perform cleanup here. }
await の使用を有効にするために、カプセル化メソッドを async キーワードでマークすることを忘れないでください。
以前の C# バージョンでは、 TaskContinuationOptions 値:
var task = Task.Factory.StartNew<StateObject>(() => { /* action */ }); task.ContinueWith(t => { /* error handling */ }, context, TaskContinuationOptions.OnlyOnFaulted);
TaskContinuationOptions.OnlyOnFaulted は、先行タスクが例外をスローした場合にのみ継続を実行することを指定します。
ContinueWith を複数回呼び出して、例外でないケースを処理することもできます。
task.ContinueWith(t => { /* error handling */ }, context, TaskContinuationOptions.OnlyOnFaulted); task.ContinueWith(t => { /* on success */ }, context, TaskContinuationOptions.OnlyOnRanToCompletion); task.Start();
これらのメソッドは、例外処理に対するさまざまなアプローチを提供します。タスク。C# バージョンに基づいた柔軟性とカスタマイズを提供します。
以上がC# タスクで例外を効果的に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。