Если вы выбросите исключение из диалога MFC, приложение зависнет, даже если в вашем коде есть блок catch. Он отказывается реагировать на мышь или клавиатуру, и единственный способ его выключить - использовать диспетчер задач.
Почему я пишу этот вопрос
К моему стыду, есть популярное приложение, упакованное в термоусадочную пленку, которое зависает каждый раз, когда в модальном диалоге встречается исключительная ошибка. Когда мы сделали огромный переход от целочисленных кодов ошибок к исключениям, я отвечал за выбор std :: exception в качестве базового класса для создаваемых исключений. Лишь в процессе конверсии была проделана огромная работа, и наше тестирование выявило эту проблему, и к тому времени было уже слишком поздно что-либо менять. Надеюсь, этот вопрос / ответ не допустит, чтобы кто-то совершил ту же ошибку.