3

考虑这个例子

var task =Task.Factory.StartNew(()=>Console.WriteLine("test"));

task.ContinueWith(antecendent =>
        {
            ExceptionProcessor.HandleError(task.Exception.Flatten());
        }, TaskContinuationOptions.OnlyOnFaulted);

在此示例中,resharper 预测 task.Exception.Flatten() 中可能存在空指针异常,因为它假定 task.Exception 可能为 null 。

但对于所有实际情况,它不会为 null,因为参数 TaskContinuationOptions.OnlyOnFaulted 确保仅在发生异常时调用该方法。

那么我如何告诉 Resharper 忽略所有类似的警告呢?

4

2 回答 2

3

我认为你有几个选择:

  1. 在这种情况下忽略警告。
  2. 将所有“可能的 NullReferenceException”的严重性降低到类似于提示的程度,甚至不显示。
  3. 通过评论禁用此警告实例。
  4. 假装 ReSharper 是正确的并添加null检查。

我不喜欢#4,你会降低你的代码的可读性,这样 ReSharper 才会开心。我也不喜欢 #3,因为这些注释可能会严重污染您的代码。#2 更好,但我认为 #1 是最好的选择:“Posible NullReferenceException”总是会有误报,因此您应该将其用作指导:“小心,可能有问题”,而不是严格的“你必须解决这个问题”。

于 2012-06-22T17:52:47.947 回答
3

Resharper 支持团队已将此视为错误,可以在此处进行跟踪http://youtrack.jetbrains.com/issue/RSRP-316492

于 2012-06-28T03:49:00.180 回答