-
Notifications
You must be signed in to change notification settings - Fork 27
uncaught
📝:
When an exception is thrown, the exception handling framework looks for the appropriate catch
block that can handle the exception. The system unwinds the call chain of the program and executes the finally
blocks it finds.
When no catch
block is able to handle an exception, the system eventually gets to the main
function of the program. This situation is called an uncaught exception.
When the exception context is set up, you can pass it an uncaught handler which will be executed in the event of an uncaught exception.
An uncaught handler is just an ordinary function wich receives the uncaught exception. This function might take care of cleaning up before termination, but it's not allowed to try and recover the current exception context.
There exists a convenience function to be used as the default uncaught handler, called e4c_print_exception
. This function simply prints information regarding the exception to stderr
, and then exits.
After the uncaught handler has been executed, either the program or the current thread will be terminated right away.
- When the library is in thread-unsafe mode, the entire program will exit with a status code
EXIT_FAILURE
. - However, if the library is in thread-safe mode, then only the offending thread will be terminated with a status value
PTHREAD_CANCELED
and the program may continue.
If the canceled thread happens to be the last thread of the application, then the exit status code will be implementation-defined (read pthread_exit
documentation).