c# – 异常越过Application.ThreadException和AppDomain.CurrentDomain.UnhandledException
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 异常越过Application.ThreadException和AppDomain.CurrentDomain.UnhandledException,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1559字,纯文字阅读大概需要3分钟。
内容图文
![c# – 异常越过Application.ThreadException和AppDomain.CurrentDomain.UnhandledException](/upload/InfoBanner/zyjiaocheng/775/4038353826d245f4a794f0f31184c4ff.jpg)
我遇到了应用程序挂起的问题,并给出了默认的“请告诉Microsoft有关此问题”的弹出窗口,而不是应用程序中的“未处理的异常”对话框.
在应用程序代码中,Application.ThreadException和AppDomain.CurrentDomain.UnhandledException都被重定向到将错误日志写入磁盘,将屏幕截图保存到磁盘并显示友好对话框的方法.
但是当发生这种错误时,这三件事都不会发生.我得到的只是在事件查看器中:
EventType clr20e3,P1 myapp.exe,P2 4.0.0.0,P3 47d794d4,P4 mscorlib,P5 2.0.0.0,P6 471ebc5b,P7 15e5,P8 27,P9 system.argumentoutofrange,P10 NIL
鉴于错误似乎只是在应用程序运行了几个小时之后才发生,我想知道它是否可能是内存泄漏问题.我搜索了一下“clr20e3”,但只能找到ASP.Net的东西.我的应用程序是Windows Forms(.Net 2.0)exe,使用了很多程序集 – 在C#和一些非托管C中.
我想它也可能是错误处理方法中的一个错误 – 正如一些答案建议的那样,我可能会尝试在错误处理程序的开头记录(但考虑到这几乎就是我所做的…).
任何帮助解决这个问题都将非常感激 – 无论是解决方案,还是如何找出问题的根本原因的建议.
更新:原始错误的根本原因是访问具有负索引的数组(即system.argumentoutofrange).为什么这个没有被困对我来说有点神秘,但考虑到两个异常被发送到相同的处理代码,我想知道是否可能没有(例如)两者都被调用并在资源上进行战斗的条件(例如,日志文件)?
我设法通过在错误处理代码中的任何其他内容之前执行EventLog.WriteEntry来证明这一点.现在添加了一个标志以防止错误处理中的重新进入,我似乎不再有问题…
解决方法:
只是在黑暗中拍摄 – 是否有可能从您的异常处理程序中抛出ArgumentOutOfRangeException?
另外,您没有说出有什么类型的应用程序有问题 – Application.ThreadException只影响WinForms线程,所以如果这不是GUI应用程序,它就没用了. (参见MSDN documentation中的备注部分)
内容总结
以上是互联网集市为您收集整理的c# – 异常越过Application.ThreadException和AppDomain.CurrentDomain.UnhandledException全部内容,希望文章能够帮你解决c# – 异常越过Application.ThreadException和AppDomain.CurrentDomain.UnhandledException所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。