CATCH

CATCH( exception_class, exception_object_pointer_name )

Parameters

exception_class

Specifies the exception type to test for. For a list of standard exception classes, see class CException.

exception_object_pointer_name

Specifies a name for an exception-object pointer that will be created by the macro. You can use the pointer name to access the exception object within the CATCH block. This variable is declared for you.

Remarks

Use this macro to define a block of code that catches the first exception type thrown in the preceding TRY block. The exception-processing code can interrogate the exception object, if appropriate, to get more information about the specific cause of the exception. Invoke the THROW_LAST macro to shift processing to the next outer exception frame. End the TRY block with an END_CATCH macro.

If exception_class is the class CException, then all exception types will be caught. You can use the CObject::IsKindOf member function to determine which specific exception was thrown. A better way to catch several kinds of exceptions is to use sequential AND_CATCH statements, each with a different exception type.

The exception object pointer is created by the macro. You do not need to declare it yourself.

Note   The CATCH block is defined as a C++ scope (delineated by curly braces). If you declare variables in this scope, remember that they are accessible only within that scope. This also applies to exception_object_pointer_name.

For more information on exceptions and the CATCH macro, see the article Exceptions in Visual C++ Programmer’s Guide.

See Also   TRY, AND_CATCH, END_CATCH, THROW, THROW_LAST, CATCH_ALL, CException