我注意到使用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的内容?
答案 0 :(得分:3)
<强>原因强>
在调用堆栈的某个地方,try / catch块正在包装此异常并正常处理它。&#34;
如何查看已处理的例外情况
如果确实想检查是否正在抛出,则无论是否用户未处理,您需要在Thrown
菜单下为Common Language Runtime Exceptions
启用Debug > Exceptions...
例外复选框。
<强>重复强>
启用抛出的异常设置,再试一次,您将收到有关异常的通知。
其他可能性
您的代码可能已过期。
答案 1 :(得分:2)
在VS中,转到Debug-&gt; Exceptions-&gt; Common Language Runtime Exceptions并检查Thrown,然后重试。如果您在其他地方遇到异常,它会告诉您。