LINUX.ORG.RU

История изменений

Исправление monk, (текущая версия) :

ловишь в main все необработанные исключения, пишешь - unhandled exception catched

Там уже поздно. Так уже проще std::set_terminate прицепить.

Проблема в том, что исключения используют для восстановимых ошибок. А то, что они могут прилететь откуда угодно, заставляет писать программы, которые не должны внезапно падать, в стиле:

for(auto a : get_data()) {
   try {
      x = x + а.d1 * a.d2;
   } catch(...) {}; // игнорируем недокументированное
}
~foo::foo() 
{
   try {
      somecode();
   } catch(...) {}; // в деструкторе нельзя исключения
}

Исходная версия monk, :

ловишь в main все необработанные исключения, пишешь - unhandled exception catched

Там уже поздно. Так уже проще std::set_terminate прицепить.

Проблема в том, что исключения используют для восстановимых ошибок. А то, что они могут прилететь откуда угодно, заставляет писать программы, которые не должны внезапно падать, в стиле:

for(auto a : get_data()) {
   try {
      x = x + а.d1 * a.d2;
   } catch(...) {}; // игнорируем недокументированное
}
~foo::foo() 
{
   try {
   } catch(...) {}; // в деструкторе нельзя исключения
}