Capture des exceptions générées dans System.Threading.Tasks.Task
Avec l'introduction des mots clés async et wait, la gestion des exceptions dans Tasks devient nettement plus simple. Vous pouvez utiliser un bloc try-catch dans une méthode asynchrone pour intercepter les exceptions comme suit :
try { var task = Task.Factory.StartNew<StateObject>(() => { /* action */ }); await task; } catch (Exception e) { // Perform cleanup here. }
N'oubliez pas de marquer la méthode d'encapsulation avec le mot-clé async pour activer l'utilisation de wait.
Pour les versions antérieures de C#, vous pouvez gérer les exceptions à l'aide de la surcharge ContinueWith qui accepte une TaskContinuationOptions value:
var task = Task.Factory.StartNew<StateObject>(() => { /* action */ }); task.ContinueWith(t => { /* error handling */ }, context, TaskContinuationOptions.OnlyOnFaulted);
TaskContinuationOptions.OnlyOnFaulted spécifie que la continuation ne doit s'exécuter que lorsque la tâche antécédente lève une exception.
Vous pouvez également gérer des cas non exceptionnels avec plusieurs appels à ContinueWith :
task.ContinueWith(t => { /* error handling */ }, context, TaskContinuationOptions.OnlyOnFaulted); task.ContinueWith(t => { /* on success */ }, context, TaskContinuationOptions.OnlyOnRanToCompletion); task.Start();
Ces méthodes offrent différentes approches de gestion des exceptions dans Tasks, offrant flexibilité et personnalisation en fonction de votre C# version.
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!