Кто-то в другом вопросе предложил использовать catch(...) для захвата всех других необработанных неожиданных/непредвиденных исключений, окружая весь main() блоком try{}catch(...){}.
Звучит как интересная идея, которая может сэкономить много времени на отладке программы и оставить хотя бы намек на то, что произошло.
Суть вопроса в том, что какая информация может быть восстановлена  таким образом (отличные от всех отладочных глобальных переменных, которые я оставляю позади), и как восстановить его (как получить доступ и узнайте, какой вызов был вызван)
Кроме того, какие предостережения связаны с ним. В частности:
- будет ли он играть хорошо с потоками, которые прорастают позже?
- не будет ли он нарушать обработку segfaults (захвачен где-то в качестве сигнала).
- не повлияет ли он на другие блоки try..., которые неизбежно вложены внутри, которые должны обрабатывать ожидаемые исключения?
