我的工作中的uge解决方案存在问题,它会导致很多“对象引用未设置为对象实例”错误。确定导致异常的空对象的最佳方法是什么?
我可以尝试在一个地方捕获所有这些异常,但找不到确定null成员的方法,以便我可以正确修复它。
try {
}
catch (Exception ex)
{
if (ex is ReferenceNullException)
ex.??
}
}
因为我可以查看堆栈跟踪,所以认为你也可以得到导致错误的原因是合理的。
答案 0 :(得分:11)
想一想。这是一个NullReferenceException。这意味着您正在尝试调用方法或访问 NULL REFERENCE 上的属性到对象。这意味着您尝试访问的对象引用是EMPTY,null。它不存在。
所以你想要找到的东西实际上并不存在。
通常,为了跟踪哪个对象引用为null,使用调试器。只需在导致异常的行上设置断点,并检查所有变量以查看哪个变量为空。
调试器是您最好的工具。
答案 1 :(得分:3)
如果您无法使用IDE调试NullReferenceException,以防它只发生在客户端或难以重现,那么具有FUNCTION / FILE / LINE信息的NullReferenceException.StackTrace将帮助您找到空对象NullReferenceException .ToString()还包括StackTrace,例如:
System.NullReferenceException:未将对象引用设置为实例 一个对象。
在WindowsFormsApplication3.Form1.button1_Click(对象发送者, EventArgs e)in d:\ VCS \ WindowsFormsApplication3 \ WindowsFormsApplication3 \ Form1.cs中:行 26
要为发布版本启用行号,请查看此帖子Display lines number in Stack Trace for .NET assembly in Release mode
答案 2 :(得分:0)
查看有关Try-Catch http://msdn.microsoft.com/en-us/library/0yd65esw(v=vs.71).aspx
的文档你可以在try catch中有多个catch,以自己的方式处理不同的异常
try{
//do stuff
} Catch (NullReferenceException ex){
} Catch (Exception ex) {
}