C# 对象未设置为引用

C# 对象未设置为引用,c#,plugins,dynamics-crm,C#,Plugins,Dynamics Crm,这个问题让我发疯,因为我看不出是什么原因造成的。这种行为是出乎意料的,我就是看不出它是如何发生的。当我使用下面的代码执行我的插件时,我得到错误消息“badaboom”。正如所料 public void Execute(IPluginExecutionContext context) { throw new Exception("bada boom"); try { throw new Exception("bada bing"); ... } catch (Exc

这个问题让我发疯,因为我看不出是什么原因造成的。这种行为是出乎意料的,我就是看不出它是如何发生的。当我使用下面的代码执行我的插件时,我得到错误消息“badaboom”。正如所料

public void Execute(IPluginExecutionContext context)
{
  throw new Exception("bada boom");
  try
  {
    throw new Exception("bada bing");
    ...
  } catch (Exception) { }
  ...
}
然而,当我评论第一次投球时,我没有看到“八达冰”。相反,我得到的是“对象未设置为引用”!什么鸭子?!(有意打字。)

这是本期的图片


在第一个示例中,异常在调用方级别处理,直到找到catch块为止。在第二个示例中,异常在与Execute方法的try相关联的强制catch或finally块中处理。
因此,在catch或finally块内的代码中有一个null引用异常

void Main()
{
    try
    {
        Execute();
    }
    catch(Exception x)
    {
        Console.WriteLine("In main: " + x.Message);
    }

}

public void Execute()
{
  // Goes to the catch block in main
  //throw new Exception("bada boom");

  try
  {
      // Goes to the catch block associated with this try
      throw new Exception("bada bing");
  }
  catch(Exception x)
  {
      // Uncomment this to see the null reference exception in main
      // Console.WriteLine("In Execute: " + x.InnerException.Message);
      Console.WriteLine("In Execute:" + x.Message);
  }
}
当然,当我说强制性的时候,我想说你不能写

try
{
   ....
}

在try之后没有catch或finally子句。您可以编写一个catch或finally块而不使用代码,但是您不能忽略这两个关键字中的一个及其块

您有catch块吗?我猜您有一些finally或catch子句导致
NullReferenceException
。如果可能的话,还可以进行堆栈后跟踪和SSCCE查看您的cath/finally block?
未设置为参考的对象没有任何意义。请在您的帖子中保持清晰。请查看编辑。在我的代码中没有。而渔获物是空的…:(在强制的catch块中处理?catch不是强制的!它也可以是finally。catch或finally应该被定义(如果你想的话是空的,但是定义了)我有一个catch。我只是决定将它表示为“…”,因为它不可编译,不能省略它。但是它是空的。或者更确切地说,它是空的。所以我想。某个白痴(即健忘的我)已将声明移到代码中的后期,因此出现了问题。好眼力。
try
{
   ....
}