ReSharper给了我一个CoVariantConversion警告,所以我决定谷歌这个,看看如何解决它。我遇到了这段代码:
// ReSharper disable CoVariantArrayConversion
try
{
Task.WaitAll(taskList.ToArray());
}
catch (AggregateException ex)
{
ex.Handle(e => true);
}
// ReSharper restore CoVariantArrayConversion
这部分令我困惑:
ex.Handle(e => true);
它做什么?我认为它什么也没做。
答案 0 :(得分:3)
你是对的:可以删除该行并具有相同的效果(导致所有异常被视为“已处理”),就好像该行在那里一样。
唯一有用的时间是lambda是否会因某些异常而返回false(在这种情况下它不会)。
答案 1 :(得分:1)
这就是说,处理异常,没有别的。
答案 2 :(得分:1)
以下示例显示如何使用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;
});
}