【发布时间】:2011-07-19 23:56:34
【问题描述】:
我在网上看到了AggregateException 的示例,我正在尝试弄清楚它是如何工作的。我写了一个简单的例子,但是我的代码由于某种原因不起作用。
谁能解释一下问题出在哪里?
public static void Main()
{
try
{
Parallel.For(0, 500000, i =>
{
if (i == 10523)
throw new TimeoutException("i = 10523");
Console.WriteLine(i + "\n");
});
}
catch (AggregateException exception)
{
foreach (Exception ex in exception.InnerExceptions)
{
Console.WriteLine(ex.ToString());
}
}
}
【问题讨论】:
-
什么不起作用?你期望发生什么?
-
用户代码未处理超时异常
-
您是说您希望异常由 catch 块处理,但您却得到“用户代码未处理超时异常”,对吗?如果是这种情况,Yahia 答案和 cmets 可能就是您要寻找的。span>
-
A TimeoutException 不是 AggregateException,这就是你不进入 catch 区域的原因。您必须手动创建一个包含超时异常的 AggregateException ...请参阅下面的答案。干杯。