catch keyword | Exception handler in try statement |
handler ::= catch ( exception-declaration ) compound-statement exception-declaration ::= type-specifier-seq declarator | type-specifier-seq abstract-declarator | type-specifier-seq | . . . |
The catch keyword introduces an exception handler in a try statement. A single try statement must have one or more catch blocks. The exception-declaration declares an exception handler object. If an exception is thrown in the try's compound-statement, the type of the exception object is compared with the type of each catch declaration. The compound-statement of the first catch block whose type matches that of the exception object is executed. A catch block (typically the last one in a try statement) can have an ellipsis ( . . . ) as the exception-declaration to match all exceptions.
int main( ) try { run_program( ); } catch(const std::exception& ex) { std::cerr << ex.what( ) << '\n'; std::abort( ); } catch(...) { std::cerr << "Unknown exception. Program terminated.\n"; std::abort( ); }
declarator, statement, throw, try, type, Chapter 4