Если я правильно читаю ваш вопрос, вы спрашиваете, можете ли вы перегрузить throw
(изменяя его поведение по умолчанию), чтобы он что-то определял пользователем. Нет, ты не можешь.
Редактировать: поскольку вы настойчивы :), вот вам плохая идея ™:
#include <iostream>
#include <stdlib.h>
#include <windows.h>
void monkey() {
throw std::exception("poop!");
}
LONG WINAPI MyUnhandledExceptionFilter(struct _EXCEPTION_POINTERS *lpTopLevelExceptionFilter) {
std::cout << "poop was thrown!" << std::endl;
return EXCEPTION_EXECUTE_HANDLER;
}
int main() {
SetUnhandledExceptionFilter(&MyUnhandledExceptionFilter);
monkey();
return 1;
}
Опять же, это очень плохая идея, и она, очевидно, зависит от платформы, но она работает.