Compartir a través de


Excepciones de C++ no controlados

Si un controlador coincidente (o el controlador de Catch de puntos suspensivos) no puede encontrar para la excepción actual, se llama a la función predefinida en tiempo de ejecución de terminate .(También puede llamar explícitamente terminate en controladores cualquiera de los). La acción predeterminada de terminate es llamar abort.Si desea terminate para llamar a otra función en el programa antes de salir de la aplicación, llame a la función de set_terminate con el nombre de la función que se va como su argumento único.Puede llamar a set_terminate en cualquier punto del programa.La rutina de terminatesiempre llama a la función última especificada como argumento a set_terminate.

Ejemplo

El ejemplo siguiente se inicia una excepción de char * , pero no contiene un controlador designado para detectar excepciones de char *escrito.La llamada a set_terminate indica a terminate para llamar a 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.

La función de term_func debe finalizar el programa o el subproceso actual, idealmente llamando a exit.Si y, en su lugar no vuelve al llamador, se llama a abort .

Vea también

Referencia

Control de excepciones de C++