我正在使用ICorProfilerCallback2接口来实现一个分析器来监视任何 .net 应用程序中发生的所有未处理/未捕获的异常。ExceptionThrown 事件帮助我找到程序中发生的所有异常(捕获/未捕获异常)。但我只需要捕获未处理的异常。
问问题
67 次
2 回答
1
除了抛出异常时抛出的 ExceptionThrown 事件,还有更多相关的事件——主要是 ExceptionCatcherEnter/ExceptionCatcherLeave、ExceptionSearchFunction* 和 ExceptionUnwind*。它们在相关事件发生时被抛出。如果 ExceptionCatcher* 事件正在触发,则异常被捕获。如果异常完全未被捕获,则线程或程序将终止。在这些情况下,您可以使用 ThreadDestroyed 和 Shutdown 方法。您将需要找到一种方法来存储 ExceptionThrown 期间的当前信息(ThreadId 和当前异常状态/数据之间的映射,注意不要存储任何将失效的内容),并且只处理稍后回调中的一个信息。
于 2019-06-17T13:44:52.437 回答
0
您不需要为此使用分析 API。此外,该分析事件在首次引发异常时触发。到时候会不会处理还不得而知。
要监视未处理的异常,请在 AppDomain.CurrentDomain.UnhandledException 中安装处理程序。
于 2019-04-02T17:58:34.123 回答