如何确定空引用的位置?

问题生 2011-01-13 12:34:49
在System.NullReferenceException中偶然第一次出现的"***.***.DLL"类型的异常,未将对象的引用设置到对象的实例。

我知道这是某个地方空引用了。但是代码太多了,不知道具体出现在哪一行。
请问有什么办法全局捕捉一下这种空引用么?并准确定位。无法对可能出现的地方一个一个try..catch,因为可能的函数太多了。
貌似global.asax里的applacation_error函数无法捕获这种错误。。。
...全文
153 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
问题生 2011-01-14
  • 打赏
  • 举报
回复
对了,最终找到的问题是问题函数中try,catch把问题捕获了,但没有在catch中处理或记录。导致在外围无法捕获,问题的出现。
问题生 2011-01-14
  • 打赏
  • 举报
回复
哎,感谢大家的回答,可是都不靠谱。
http://www.cnblogs.com/eaglet/archive/2009/02/17/1392191.html
这是我找到的解决方法,共享给有同样问题的朋友。
再次谢谢各位的热心。
wuyq11 2011-01-13
  • 打赏
  • 举报
回复
f11 单步调试
wangsong145 2011-01-13
  • 打赏
  • 举报
回复
try catch下,到时候可以看到具体哪行出错
bdmh 2011-01-13
  • 打赏
  • 举报
回复
跟踪吧,这个必须会
phil999 2011-01-13
  • 打赏
  • 举报
回复
错误页面上有调用堆栈
vrhero 2011-01-13
  • 打赏
  • 举报
回复
不按规矩做事发生事故才想找一条能补救的捷径...你觉得可能吗?
phil999 2011-01-13
  • 打赏
  • 举报
回复
asp.net里用timer?估计是 HttpContext.Current 为 null
烈火蜓蜻 2011-01-13
  • 打赏
  • 举报
回复
看一下,堆栈就知道了
csproj 2011-01-13
  • 打赏
  • 举报
回复
在出错操作前加个断点,运行到断点后 然后狂点F11

或者用F10 找到出错的过程,然后重新运行,进到出错的过程里面去F10
问题生 2011-01-13
  • 打赏
  • 举报
回复
谢谢各位,可是都没看清楚问题。
回1,8楼,没有进入错误页面。
回2.3.4.5.6.9楼
函数太多根本就不知道是哪个地方出的错,如果能够确认是哪个函数,我就加try,catch了。只能确认是几十个timer中某个Timer回调函数出错了。可所有回调函数有几十个,挨个加try,catch工作量巨大。
回7楼,global.asax中的application_Error()函数是application 级别吧。可是它没有捕获任何异常。
whycom 2011-01-13
  • 打赏
  • 举报
回复
Exception.Source
获取异常的源代码
winner213 2011-01-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 phil999 的回复:]
错误页面上有调用堆栈
[/Quote]


+1
Dobzhansky 2011-01-13
  • 打赏
  • 举报
回复
asp.net 是能捕获到全局未处理异常的

application 级别, 得到异常对象了, 找异常的调用堆栈就简单了.
Fibona 2011-01-13
  • 打赏
  • 举报
回复
加try

{

}
catch(Exception ex)
{
ex.StackTrace();//查看详细的错误信息

}

只要你自己单步调试一下,肯定就知道那个对像没有正确实例化了
你的选择B 2011-01-13
  • 打赏
  • 举报
回复
是你引用了没有实例化的对象
没有被实例化的对象为NULL,是不能被操作的
根据错误的提示,对具体的对象new一下

110,552

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧