C# 多线程异常处理
1、分析
不能直接用tray-catch处理,需要线程等待(WaitAll),才能捕获到异常
2、异常
多线程异常类:AggregateException
打印异常
foreach (var item in ex.InnerExceptions) { Console.WriteLine(item.Message); }
3、案例
try { List<Task> tasks = new List<Task>(); for (int i = 0; i < 20; i++) { string k = $"Task{i}"; Task task = Task.Run(() => { if (k.Equals("Task3")) { throw new Exception("Task3"); } else if (k.Equals("Task5")) { throw new Exception("Task5"); } else if (k.Equals("Task7")) { throw new Exception("Task7"); } }); tasks.Add(task); } // 线程等待 Task.WaitAll(tasks.ToArray()); } catch (AggregateException ex) { Console.WriteLine(ex.Message); foreach (var item in ex.InnerExceptions) { Console.WriteLine(item.Message); } }

浙公网安备 33010602011771号