本文主要是要说明PLINQ中如果发生了异常(除取消任务以外的异常),那么将会返回一个aggregateexception(因为所有并行查询中发生的异常都会被抛出),需要对其中的innerexception进行进一步处理。
首先来看普通Linq查询中发生的异常:由于是顺序执行查询,因此当碰到了对应的第一个异常时便自动捕获,也无须考虑线程的问题,因为是在同一个线程中。
IEnumerable<int> numbers = Enumerable.Range(-5, 10);
var query = from number in numbers select 100 / number;
try
{
foreach(var n in query)
Console.WriteLine(n);
}
catch (DivideByZeroException)
{
Console.WriteLine("Divided by zero!");
}
Console.WriteLine("---");
Console.WriteLine("Sequential LINQ query processing");
Console.WriteLine();
因篇幅问题不能全部显示,请点此查看更多更全内容