簡體   English   中英

對AggregateException Handle方法的困惑

[英]Confusion over AggregateException Handle method

ReSharper給了我一個CoVariantConversion警告,所以我決定谷歌這個,看看如何解決它。 我遇到了這段代碼:

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

這部分令我困惑:

 ex.Handle(e => true);

它有什么作用? 我認為它什么都不做。

你是對的:可以刪除該行並具有相同的效果(導致所有異常被視為“已處理”),就好像該行在那里一樣。

它唯一有用的時候是lambda可能會因某些異常而返回false(在這種情況下它不會)。

這就是說,處理異常,沒有別的。

這是一個示例,說明如何使用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;
    });
}

該示例來自本文: 異步編程 - 異常處理

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM