应该是NullReferenceException并不总是抛出

时间:2013-02-14 18:36:57

标签: c# nullreferenceexception

我注意到使用Visual Studio 2010开发我的C#应用​​程序很奇怪。在某些情况下,据我所知,当它应该是时,不会抛出NullReferenceException。相反,应用程序继续正常但被卡住,以至于我无法正常关闭它并被迫杀死它。

例如,请考虑以下事项:

public class MyControl : UserControl
{
    private SomeClass myObj;
    public MyControl()
    {
        Bar();
        myObj = new SomeClass();
    }

    public void Bar()
    {
        myObj.SomeProperty = 5; // myObj is null here but no exception gets thrown
    }
}

代替执行myObj.SomeProperty = 5;时抛出的异常,代码跳出函数回到父表单调用MyControl的构造函数的位置。我可以在其他实例中获取调试器捕获的NullReferenceExceptions(以及其他异常),而不是像这样的。

是否应该抛出NullReferenceException或者我是否误解了有关C#和/或.NET的内容?

2 个答案:

答案 0 :(得分:3)

<强>原因

在调用堆栈的某个地方,try / catch块正在包装此异常并正常处理它。&#34;

如何查看已处理的例外情况

如果确实想检查是否正在抛出,则无论是否用户未处理,您需要在Thrown菜单下为Common Language Runtime Exceptions启用Debug > Exceptions...例外复选框。

<强>重复

启用抛出的异常设置,再试一次,您将收到有关异常的通知。

其他可能性

您的代码可能已过期。

答案 1 :(得分:2)

在VS中,转到Debug-&gt; Exceptions-&gt; Common Language Runtime Exceptions并检查Thrown,然后重试。如果您在其他地方遇到异常,它会告诉您。