Here's the setup.
I have a C++ program which calls several functions, all of which potentially throw the same exception set, and I want the same behaviour for the exceptions in each function (e.g. print error message & reset all the data to the default for exceptionA; simply print for exceptionB; shut-down cleanly for all other exceptions).
It seems like I should be able to set the catch behaviour to call a private function which simply rethrows the error, and performs the catches, like so:
void aFunction()
{
try{.../* do some stuff that might throw */...}
catch(...){handle();}
}
void bFunction()
{
try{.../* do some stuff that might throw */...}
catch(...){handle();}
}
void handle()
{
try{throw;}
catch(anException)
{
...
// common code for both aFunction and bFunction
// involving the exception they threw
...
}
catch(anotherException)
{
...
// common code for both aFunction and bFunction
// involving the exception they threw
...
}
catch(...)
{
...
// common code for both aFunction and bFunction
// involving the exception they threw
...
}
}
Now, what happens if "handle" is called outside of the exception class. I'm aware that this should never happen, but I'm wondering if the behaviour is undefined by the C++ standard.