如果没有使用分析器,在运行程序中是否有任何方法可以检测到第一次机会异常?理想情况下,我想记录一旦catch块接管最终异常后不可用的更详细的状态信息.
jln*_*thy 19
我正在谷歌上搜索FirstChanceException,两年多后我无法抗拒回答这个问题......
现在,在.net 4.0中,您可以捕获AppDomain 的FirstChanceException事件.它只是一个事件,所以你无法处理错误,但它似乎是一个很好的,集中的方式来获取有关异常的信息,无论它们是否被处理.在允许catch块处理它之前抛出FirstChanceException事件.我没有找到很多关于它的信息,但除了微软文档之外,其中一个更好的来源是Mitch Sellers Blog.
我认为在 .NET 中获取该信息的唯一方法是使用调试器。
否则,您必须自己开发一个解决方案来保存堆栈帧的状态并采用特殊的方式来记录异常。您基本上会做与内存分析器相同的事情,跟踪创建的实例。不过,除非您限制记录的信息量,否则这将对性能造成巨大影响。
更好的解决方案是使用 System.Diagnostics 命名空间中的 Trace 和 Assert 功能来有选择地跟踪程序状态,或者使用日志记录工具(log4net、EnterpriseLibrary、NLog,滚动您自己的简单工具)来转储线程/堆栈/随时变化的信息。
无论如何,添加所有这些额外信息都是很大的开销。
编辑:我在我的提要中得到了这个项目的新闻:NTrace。看起来它更适合您想要做的事情。
| 归档时间: |
|
| 查看次数: |
1475 次 |
| 最近记录: |