5

ReSharper 给了我一个 CoVariantConversion 警告,所以我决定用谷歌搜索,看看如何解决它。我遇到了这段代码:

 // ReSharper disable CoVariantArrayConversion
 try
 {
    Task.WaitAll(taskList.ToArray());
 }
 catch (AggregateException ex)
 {
    ex.Handle(e => true);
 }
 // ReSharper restore CoVariantArrayConversion

这部分让我感到困惑:

 ex.Handle(e => true);

它有什么作用?我会认为它什么都不做。

4

3 回答 3

5

您是对的:可以删除该行并具有与该行存在相同的效果(导致所有异常都被视为“已处理”)。

唯一有用的是 lambda 是否可以为某些异常返回 false(在这种情况下不会)。

于 2013-08-26T19:09:55.907 回答
2

这是一个显示如何使用 Handle 方法的示例:

Task task = Task.Factory.StartNew(() => 
{ 
    throw new UnauthorizedAccessException(); 
}); 
try
{
    task.Wait();
}
catch (AggregateException ex)
{
    ex.Handle(x =>
    {
        if (x is UnauthorizedAccessException)
        {
            // Handle this exception...
            return true;
        }
        // Other exceptions will not be handled here.
        return false;
    });
}

示例来自这篇文章:异步编程 - 异常处理

于 2015-10-17T19:59:48.923 回答
1

这就是说,异常已被处理,仅此而已。

于 2013-08-26T19:09:20.840 回答