Team LiB   Previous Section   Next Section
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.

Example

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(  );
}

See Also

declarator, statement, throw, try, type, Chapter 4

    Team LiB   Previous Section   Next Section