FirstChanceException 的完整堆栈

Bri*_*gon 2 .net c# exception-handling

目前,我们使用以下方法在应用程序域上设置了第一次机会异常处理程序:

AppDomain.CurrentDomain.FirstChanceException += FirstChanceHandler;
Run Code Online (Sandbox Code Playgroud)

该解决方案的问题在于它只为我们提供了引发错误的确切行和方法的堆栈跟踪,而不是冒泡的那些。我们需要获取导致此异常的链上方法的上下文。

异常由第三方库处理和吞下(尽管如此错误),但我们仍然需要该上下文,因为在第三方库中该上下文中有其他信息。

目前我们可以通过劫持他们的记录器来获得它,但这似乎是一个坏主意;如果他们的日志实现发生变化,我们将无法访问底层信息/上下文。与日志记录相比,异常不太可能发生变化。

有没有办法解决这个问题?

Bri*_*gon 5

我实际上不能用它做我想做的事;出于大多数有意义的原因。但我确实找到了答案,所以为了任何谷歌员工的利益,只需在事件处理程序中使用以下代码:

var stack = new StackTrace(true);
Run Code Online (Sandbox Code Playgroud)