Comment gérer les exceptions levées dans des threads séparés
Dans les applications multithread, il devient crucial de gérer les exceptions qui se produisent dans des threads autres que celui qui exécute le code principal. Ce défi nécessite une gestion minutieuse pour garantir une gestion appropriée des erreurs et la stabilité de l'application.
L'utilisation de Task
Depuis .NET 4, la tâche
task.ContinueWith(ExceptionHandler, TaskContinuationOptions.OnlyOnFaulted); private void ExceptionHandler(Task<int> task) { var exception = task.Exception; Console.WriteLine(exception); }
try { task.Wait(); } catch (AggregateException ex) { Console.WriteLine(ex); }
Utilisation de Threads dans .NET 3.5
Dans .NET 3.5, où Task< T> n'est pas disponible, vous pouvez gérer les exceptions des threads en utilisant les approches suivantes :
Exception exception = null; Thread thread = new Thread(() => SafeExecute(() => Test(0, 0), Handler)); thread.Start(); private void Handler(Exception exception) { Console.WriteLine(exception); }
Exception exception = null; Thread thread = new Thread(() => SafeExecute(() => Test(0, 0), out exception)); thread.Start(); ... Console.WriteLine(exception);
En implémentant ces techniques, vous pouvez gérer efficacement les exceptions lancées dans différents threads, garantissant que votre application continue de fonctionner de manière fiable même en présence d'erreurs inattendues.
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!