ホームページ >バックエンド開発 >C++ >C# タスクで例外を効果的に処理するにはどうすればよいですか?

C# タスクで例外を効果的に処理するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-29 01:53:14483ブラウズ

How Do I Effectively Handle Exceptions in C# Tasks?

タスクでの例外処理

System.Threading.Tasks.Task 内で発生した例外をキャッチします。アプリケーションがスムーズに機能するためには非常に重要です。ここでは、優先する C# バージョンに基づいて、タスクで例外を処理するための最適なアプローチについて説明します。

C# 5.0 以降

async および await キーワードの導入により、タスクでの例外処理は次のようになります。大幅にシンプルになります。次のように、非同期メソッド内で try-catch ブロックを使用して例外をキャッチできます。

try
{
    var task = Task.Factory.StartNew<StateObject>(() => { /* action */ });
    await task;
}
catch (Exception e)
{
    // Perform cleanup here.
}

await の使用を有効にするために、カプセル化メソッドを async キーワードでマークすることを忘れないでください。

C# 4.0 以前

以前の 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。