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

时间:2009-12-23 16:19:46

标签: 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());
   }
});

处理程序应该优先捕获所有类型的异常。

1 个答案:

答案 0 :(得分:4)

这取决于你想要抓住的东西。如果您只想要C ++异常,请查看使用set_unexpectedset_terminate设置自己的处理程序。如果您想要所有Windows异常,则使用SetUnhandledExceptionFilter指定顶级处理程序。

在大多数情况下,捕获所有Windows异常也会捕获所有C ++异常,但情况并非总是如此,因此您最好尽可能使用这两种方法来捕获。最后一个CRT有些奇怪(见this),这可能意味着并未捕获所有异常。