Глобальный обработчик Uncaught Exception в приложении VC ++? - PullRequest
4 голосов
/ 23 декабря 2009

Есть ли способ перехватить все необработанные исключения в приложении 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 Ответ

4 голосов
/ 23 декабря 2009

Это зависит от того, что вы пытаетесь поймать. Если вы просто хотите исключения C ++, посмотрите на настройку собственных обработчиков, используя set_unexpected или set_terminate . Если вам нужны все исключения Windows, вы используете SetUnhandledExceptionFilter , чтобы указать обработчик верхнего уровня.

Перехват всех исключений Windows должен в большинстве случаев также перехватывать все исключения C ++, но это не всегда так, поэтому лучше использовать оба подхода, чтобы поймать как можно больше. Существуют некоторые странности с последними ЭЛТ (см. this ), что может означать, что не все исключения будут обнаружены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...