在 Null 引用异常中使 MoveNext() 无效

我有WebAPI一段代码,其中在使用我的记录器记录的 try 块中编写的代码中存在 Null 引用异常。


但在TargetSite对中Exception得到记录,我收到虚空的MoveNext()而不是此代码的编写方法名。


什么可能是相同的原因?


public async Task<ResponseStatus> ProcessRCSCNotification(IList<RecurringSubscriptionModelV2> recurringSubscriptionList, string appCD)

    {

            foreach (var model in modelList)

{

  // Some code

  try

  {

     // Exception occurs here

  }

  catch (Exception ex)

  {

    // Logger is logging exception here

  }

}

        return null;

    }


侃侃尔雅
浏览 265回答 2
2回答

慕盖茨4494581

您有一个async带有多个awaits的方法。编译器将整个方法转换为状态机,而您的方法实际上只调用了这个状态机。这个状态机类有上面提到的MoveNext()方法,它现在包含你真正想做的所有工作。要分析您的内容,NullReferenceException您应该检查StackTrace异常的属性而不是TargetSite.

慕雪6442864

方法是一种async/await方法。这种方法用一个MoveNext方法重写成状态机。这就是为什么您的堆栈跟踪会将此方法标识为抛出该异常的方法。.NET Core 2.0 或 2.1 具有内置或额外的 nuget 包,可以修复这样的堆栈跟踪,以提及实际方法而不是生成的方法。然而,它可能不会修复 TargetSite,而且我认为它不会处理 .NET Framework。
打开App,查看更多内容
随时随地看视频慕课网APP