首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NullReferenceException并不总是在应该抛出的时候抛出

问NullReferenceException并不总是在应该抛出的时候抛出
EN

Stack Overflow用户
提问于 2013-02-15 02:36:57
回答 2查看 221关注 0票数 3

在使用Visual Studio2010开发我的C#应用程序时,我注意到了一个奇怪的问题。在某些情况下,据我所知,NullReferenceException不会在应该抛出的时候抛出。取而代之的是,应用程序照常运行,但却卡住了,以至于我无法正常关闭它,被迫终止它。

作为示例,请考虑以下内容:

代码语言:javascript
复制
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的某些方面?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-15 02:43:04

在VS中,转到Debug-> Exceptions ->Common Language Runtime Exception并检查抛出,然后重试。它将显示您是否在其他地方捕获了异常。

票数 2
EN

Stack Overflow用户

发布于 2013-02-15 02:43:21

Reason

在调用堆栈的某个地方,try/catch块包装了这个异常,并“优雅地”处理它。

如何查看已处理的异常

如果您真的想检查是否抛出了异常,无论它是否是用户未处理的,都需要在Debug > Exceptions...菜单下为Common Language Runtime Exceptions启用Thrown exception复选框。

Repeat

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

Other Possibilities

您的代码可能已过期。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14881746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档