Как обрабатывать все ошибки, в том числе внутренние ошибки библиотеки C, единообразно
Я хотел обработать все внутренние ошибки изящно, без завершения программы.
Как обсуждалосьВот, с помощью_set_se_translator ловит ошибки деления на ноль.
Но это не ловит, например, ошибку библиотеки времени выполнения C-1073740777 (0xc0000417), которая может быть вызвана форматными строками дляPrintf которые имеют знак процента, где они не должны. (Это всего лишь пример; конечно, мы должны проверять наличие таких строк). Чтобы справиться с этим,_set_invalid_parameter_handler необходим.
Есть около десяти других таких обработчиков в спискеВот.
Кроме того, он будет перехватывать необработанные исключения C ++:SetUnhandledExceptionFilter, Таким образом, он может быть использован вместе с__установлен__ ... функции. (Статья оиспользуй это в MSVC 2008.)
Я хочу перехватить все без исключения ошибки, чтобы их можно было обработать (путем регистрации, выдачи современного стандартного исключения C ++ и возврата кода ошибки для конкретного приложения). Есть ли один обработчик, который ловит все?
Смотрите также это наПереполнение стека.
Я использую Visual Studio 2008.