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

あなたは正しいです: 行は削除され、行がそこにあるかのように同じ効果があります (すべての例外が「処理された」と見なされます)。

これが役立つのは、ラムダが一部の例外に対して 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 に答える