目前,我们使用以下内容在Application Dommain上设置了第一次机会异常处理程序:
AppDomain.CurrentDomain.FirstChanceException += FirstChanceHandler;
该解决方案的问题在于它只给出了引发错误的确切行和方法的堆栈跟踪,而不是那些冒泡的错误。我们需要在导致此异常的链上获取方法的上下文。
例外,由第三方库处理和吞噬(虽然不正确),但我们仍然需要该上下文,因为在第三方库的该上下文中有其他信息。
目前我们可以通过劫持他们的记录器来解决这个问题,但这似乎是一个坏主意;如果他们的日志记录实现发生变化,我们就无法访问底层信息/上下文。与记录相比,例外变化的可能性要小得多。
有没有办法解决这个问题?
答案 0 :(得分:3)
我实际上不能做我想做的事情;出于最有意义的原因。但我确实找到了答案,所以为了任何googlers的利益,只需在事件处理程序中使用以下代码:
var stack = new StackTrace(true);