devxlogo

Checking for an Uncaught Exception

Checking for an Uncaught Exception

A thrown exception is considered caught, when its corresponding handler has been entered (or, in case such a handler cannot be found, when unexpected() function has been invoked). Sometimes you have to check whether an uncaught exception is currently being processed. Consider a destructor that may throw an exception. If the destructor has been invoked due to stack unwinding caused by another exception, throwing an additional exception from this destructor will yield an undefined behavior. To check whether a thrown exception is currently being processed, you can use the standard function uncaught_exception():

 class FileException{};File::~File() throw (FileException);{   if ( close(file_handle) != success) // failed to close current file?  {    if (uncaught_exception()  == true ) // is there any uncaught exception being processed currently?       return;  // if so, do not throw an exception    throw FileException(); // otherwise, it is safe to throw an exception to signal an error  }return; // success}
See also  How IoT Tech Will Transform Logistics
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist