9

我在工作中遇到了一个 uge 解决方案的问题,它会出现很多“对象引用未设置为对象的实例”错误。确定导致异常的空对象的最佳方法是什么?

我可以尝试在一个地方捕获所有这些异常,但找不到确定为 null 的成员的方法,因此我可以正确修复它。

try {
}
catch (Exception ex)
{
if (ex is ReferenceNullException)
ex.??
}
}

由于我可以查看堆栈跟踪,因此认为您也可以了解导致错误的原因是合理的。

4

3 回答 3

12

想一想。这是一个 NullReferenceException。这意味着您正在尝试调用方法或访问对象的NULL REFERENCE上的属性。这意味着您尝试访问的对象引用是 EMPTY、null。它不存在。

所以你试图找到的东西实际上并不存在。

通常要使用调试器来跟踪哪个对象引用为空。只需在导致异常的行上设置一个断点并检查所有变量以查看哪个为空。

调试器是您最棒的工具。

于 2012-08-27T15:09:44.513 回答
3

如果您无法使用 IDE 调试 NullReferenceException 以防它仅发生在客户端或难以重现,那么具有 FUNCTION/FILE/LINE 信息的 NullReferenceException.StackTrace 将帮助您定位空对象 NullReferenceException.ToString( ) 还包括 StackTrace,例如:</p>

System.NullReferenceException:对象引用未设置为对象的实例。

在 D:\vcs\WindowsFormsApplication3\WindowsFormsApplication3\Form1.cs:line 26 中的 WindowsFormsApplication3.Form1.button1_Click(Object sender, EventArgs e)

要为发布版本启用行号,请查看这篇文章在发布模式下显示 .NET 程序集的堆栈跟踪中的行号

于 2016-08-19T08:17:48.403 回答
-1

查看 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) {

}
于 2012-08-27T15:12:58.297 回答