有没有办法找出是哪个对象引起了NullReferenceException ?

本文关键字:对象 NullReferenceException 有没有 | 更新日期: 2023-09-27 18:04:42

是否有任何方法可以找到导致控件从NullReferenceException流入catch块的对象名称,以便我们可以通过给出警报或记录null对象来轻松调试?

有没有办法找出是哪个对象引起了NullReferenceException ?

No.
您只获得堆栈跟踪,包括行号。
这可以帮助您处理如下简单的情况:

var result = myString.Trim();

但是在这样的行中没有帮助:

var result = myObj.Method1().Method2();

(注:答案是在事实发生四年后编辑之前的原始问题)

对象的名称是什么?对于我们程序员来说,它是一个设计时标记,用来标识对象引用,但它只有在编译之前才有意义。

一些对象有一个专用的Name属性,但这与代码中对象引用的名称没有(也不应该)有任何关系,这是视觉设计师的礼貌,在name属性之后命名对象引用,但这是一种惯例而不是要求。此外,空引用不能仅仅因为引用是null而具有Name属性,它还没有被赋值给任何具有可读Name的对象。

您可以查看堆栈跟踪,反映函数,并显示参数,并根据堆栈状态对进行猜测,但我认为并不完全如此,因为对象可能在函数中的任何位置