C# 不会在开发人员机器上抛出 NullReferenceException

C# doesn't throw NullReferenceException at developer machine

我的代码如下所示:

public partical class frmXXX : Form
{

  SomeObject foo = null;

  public void XYZ()
  {
    foo.ABC.DEF(foo.XXX, foo.YYY, foo.ZZZ);
    somethingElse();
  }

  ...

}

foo 为 null 时,我调用 XYZ() 似乎有一个错误。该程序因客户的 NullReferenceException 而崩溃,这是我所期望的。但是,在我的开发机器上我没有得到异常。我还用调试器验证了 foo 实际上是空的。调试器说它是空的。

一旦调用了空对象,方法就会结束,所以somethingElse();不会被调用。这就像一个无声的例外。是否有可能我的开发机器配置错误,或者我是否启用了某些东西?

Cntrl + Alt + E(或调试->异常或在VS2017中调试->Windows -> 异常设置) Select 全部重置,这将return默认例外。

还要确保选中 仅我的代码。您可以在 Debug -> Options 下找到它。这会将您带到 Debugger -> General 选项。在这里你可以查看 Just My Code.

您是否尝试将 TryCatch 放入此:

public void XYZ()
  {

///try here
{
        foo.ABC.DEF(foo.XXX, foo.YYY, foo.ZZZ);
}
  ///catch
{
   return error here................
}
    somethingElse();
  }

您可能将例外设置设置为非默认设置。 here 对如何恢复默认设置和如何根据您的需要调整设置很有用 link。

您可以使用 Ctrl + Alt + E 检查您的设置,对比 2015 - 2017