Compartilhar via


terminate (CRT)

 

The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.

The latest version of this topic can be found at terminate (CRT).

Calls abort or a function you specify using set_terminate.

Syntax

void terminate( void );  

Remarks

The terminate function is used with C++ exception handling and is called in the following cases:

  • A matching catch handler cannot be found for a thrown C++ exception.

  • An exception is thrown by a destructor function during stack unwind.

  • The stack is corrupted after throwing an exception.

terminate calls abort by default. You can change this default by writing your own termination function and calling set_terminate with the name of your function as its argument. terminate calls the last function given as an argument to set_terminate. For more information, see Unhandled C++ Exceptions.

Requirements

Routine Required header
terminate <eh.h>

For additional compatibility information, see Compatibility in the Introduction.

Example

// crt_terminate.cpp  
// compile with: /EHsc  
#include <eh.h>  
#include <process.h>  
#include <iostream>  
using namespace std;  
  
void term_func();  
  
int main()  
{  
    int i = 10, j = 0, result;  
    set_terminate( term_func );  
    try  
    {  
        if( j == 0 )  
            throw "Divide by zero!";  
        else  
            result = i/j;  
    }  
    catch( int )  
    {  
        cout << "Caught some integer exception.\n";  
    }  
    cout << "This should never print.\n";  
}  
  
void term_func()  
{  
    cout << "term_func() was called by terminate().\n";  
  
    // ... cleanup tasks performed here  
  
    // If this function does not exit, abort is called.  
  
    exit(-1);  
}  
term_func
() was called by terminate
().  

.NET Framework Equivalent

Not applicable. To call the standard C function, use PInvoke. For more information, see Platform Invoke Examples.

See Also

Exception Handling Routines
abort
_set_se_translator
set_terminate
set_unexpected
unexpected