The function std::set_new_handler() installs a function to be called when the global operator new or the global operator new fail.
By default, operator new throws an exception of type std::bad_alloc in the event of a failure (note that Visual C++ still retains the traditional version of new, which doesn't throw an exception in this case). set_new_handler() and its associated typedef's are declared in the header as follows:
typedef void (*new_handler) ();
new_handler set_new_handler( new_handler new_p );
set_new_hanlder() returns the address of the current handler and installs an overriding handler.
The following program overrides the default behavior of the global operators new and new. Instead of throwing an std::bad_alloc exception, it invokes the user-defined function my_handler():
using namespace std;
cerr << "allocation failure!" << endl;
int *p = new int; // will probably fail
delete p;//we get here only if the allocation succeeded
catch (my_exception & e)
//..deal with the exception