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
我的代码如下所示:
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