Search code examples
c++exception

Determining exception type after the exception is caught?


Is there a way to determine the exception type even know you caught the exception with a catch all?

Example:

try
{
   SomeBigFunction();
}
catch(...)
{
   //Determine exception type here
}

Solution

  • You can actully determine type inside a catch(...), but it is not very useful:

    #include <iostream>
    #include <exception>
    
        class E1 : public std::exception {};
        class E2 : public std::exception {};
    
        int main() {
            try {
                throw E2();
            }
            catch( ... ) {
                try {
                    throw;
                }
                catch( const E1 & e ) {
                    std::cout << "E1\n";
                }
                catch( const E2 & e ) {
                    std::cout << "E2\n";
                }
            }
        }