Поделиться через


Необработанных исключений C++

Если соответствующий обработчик (или с многоточием catch невозможно обнаружить обработчик) для текущего стандартного исключения terminate функция среды выполнения, называется.(Также можно явно вызывать terminate в любом из обработчиков.) действие по умолчанию terminate вызов abort.Если необходимо terminate чтобы вызвать некоторую другую функцию в программе, прежде чем выйти из приложения, вызовите set_terminate функция с именем функции, которая вызывается как его один аргумент.Можно вызвать set_terminate в любой момент в программе.terminateпроцедура всегда вызывает функция last при указании в качестве аргумента set_terminate.

Пример

В следующем примере показано возникновение a char * исключение, но не содержит обработчик назначенный для перехвата исключения типа char *.Вызов set_terminate инструктирует terminate вызов term_func.

// exceptions_Unhandled_Exceptions.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
void term_func() {
   cout << "term_func was called by terminate." << endl;
   exit( -1 );
}
int main() {
   try
   {
      set_terminate( term_func );
      throw "Out of memory!"; // No catch handler for this exception
   }
   catch( int )
   {
      cout << "Integer exception raised." << endl;
   }
   return 0;
}

Output

term_func was called by terminate.

term_func функция должна выполнить программу или текущий поток, идеально путем вызова exit.Если вместо этого он и не вернется к своему, вызвавшему abort вызывает.

См. также

Ссылки

Обработка исключений С++