VC++ 应用程序中的全局未捕获异常处理程序?

Kry*_*ten 4 exception-handling visual-c++

无论如何要在 MFC VC++ 2008 应用程序中捕获所有未捕获的异常?有没有像这样的Java代码:

Thread.currentThread().setUncaughtExceptionHandler(
new Thread.UncaughtExceptionHandler() {
   public void uncaughtException(Thread t, Throwable e) {
       System.out.println("Oops! We have a exception in Thread '" + t.getName() + "': " + e.toString());
   }
});
Run Code Online (Sandbox Code Playgroud)

处理程序最好捕获所有类型的异常。

tyr*_*nid 6

这取决于你想捕捉什么。如果您只想要 C++ 异常,请查看使用set_unexpected或set_terminate设置您自己的处理程序。如果您想要所有 Windows 异常,那么您可以使用SetUnhandledExceptionFilter来指定顶级处理程序。

在大多数情况下,捕获所有 Windows 异常也应该捕获所有 C++ 异常,但情况并非总是如此,因此您最好同时使用这两种方法来尽可能多地捕获。最后一个 CRT 有一些奇怪的地方(请参阅此),这可能意味着并非所有异常都会被捕获。