在 .net 异常中如何获取带有参数值的堆栈跟踪

2024-01-05

我正在尝试在 .net (c#) 中添加一个未处理的异常处理程序,该处理程序应该对“用户”尽可能有帮助。最终用户主要是程序员,因此他们只需要提示他们操作错误的对象。

我正在开发一个类似于应用程序崩溃时的 Windows XP 错误报告的 Windows,但它会立即提供有关抛出的异常的尽可能多的即时信息。

虽然堆栈跟踪使我(因为我有源代码)能够查明问题的根源,但用户没有它,因此他们在没有进一步信息的情况下迷失了。不用说,我必须花费大量时间来支持该工具。

有一些系统异常(例如 Dictionary 集合抛出的 KeyNotFoundException)确实让我烦恼,因为它们没有在消息中包含未找到的键。我可以用大量的 try catch 块填充我的代码,但它相当激进,并且需要维护更多代码,更不用说最终必须本地化的大量字符串了。

最后的问题是:有什么方法可以(在运行时)获取调用堆栈跟踪中每个函数的参数值吗? 仅此一项就可以解决 90% 的支持电话。


我不认为 System.Diagnostics.StackFrame 提供参数信息(方法签名除外)。

您可以通过 AOP 跟踪日志记录来检测麻烦的调用,甚至可以使用其异常拦截功能来有条件地记录日志,而不必浪费代码。到处看看吧http://www.postsharp.org/ http://www.postsharp.org/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 .net 异常中如何获取带有参数值的堆栈跟踪 的相关文章

随机推荐