Maison >développement back-end >C++ >Comment gérer les exceptions dans les tâches C# (Async/Await et ContinueWith) ?

Comment gérer les exceptions dans les tâches C# (Async/Await et ContinueWith) ?

DDD
DDDoriginal
2025-01-03 15:48:39617parcourir

How Do I Handle Exceptions in C# Tasks (Async/Await and ContinueWith)?

Gestion des exceptions dans les tâches C#

Lorsque vous travaillez avec Task, la gestion des exceptions est essentielle pour garantir des applications robustes et réactives. Cet article explore deux approches pour capturer les exceptions, en fonction de la version de C# utilisée.

C# 5.0 et versions ultérieures : Async et Await

En C# 5.0 et versions ultérieures, les mots clés async et wait simplifient programmation basée sur les tâches de manière significative. Au lieu de s'appuyer sur ContinueWith, les méthodes asynchrones vous permettent d'utiliser des blocs try/catch directement pour gérer les exceptions :

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 et versions antérieures : ContinueWith avec TaskContinuationOptions

Pour les anciennes versions de C#, la surcharge ContinueWith avec l’énumération TaskContinuationOptions peut être used:

// Get the task.
var task = Task.Factory.StartNew<StateObject>(() => { /* action */ });

// For error handling.
task.ContinueWith(t => { /* error handling */ }, context,
    TaskContinuationOptions.OnlyOnFaulted);

OnlyOnFaulted garantit que la suite est exécutée uniquement lorsque la tâche antécédente lève une exception. Plusieurs continuations peuvent être chaînées pour gérer différents cas :

// For error handling.
task.ContinueWith(t => { /* error handling */ }, context, 
    TaskContinuationOptions.OnlyOnFaulted);

// If it succeeded.
task.ContinueWith(t => { /* on success */ }, context,
    TaskContinuationOptions.OnlyOnRanToCompletion);

Que vous choisissiez l'approche async/await ou la technique ContinueWith avec TaskContinuationOptions, ces méthodes vous permettent d'intercepter efficacement les exceptions dans les tâches C#, garantissant ainsi que vos applications gèrent erreurs inattendues avec grâce.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn