Structured Exceptions Under Win32 (C++)
Go Up to Exception Handling in C++Builder
Win32 supports C-based structured exception handling (SEH) that is similar to standard C++ exception handling. There are some key differences, however, that require careful use when they are mixed with C++ code that is exception-aware.
Keep the following in mind when using structured exception handling in C++Builder applications:
- C-structured exceptions can be used in C++ programs.
- C++ exceptions cannot be used in a C program because C++ exceptions require that their handler be specified by the catch keyword, and catch is not allowed in a C program.
- An exception generated by a call to the RaiseException function is handled by a
try
/__except
(C++) or__try
/__except
(C) block. (You can also usetry
/__finally
or__try
/__finally
blocks. See Syntax of Structured Exceptions (C++). All handlers oftry
/catch
blocks are ignored when RaiseException is called. - Exceptions that are not handled by the application don't result in a call to terminate, but are instead passed to the operating system (in general, the end result is termination of the process).
- Exception handlers do not receive a copy of the exception object, unless they request it.
You can use the following C exception helper functions in C or C++ programs:
C++Builder does not restrict the use of UnhandledExceptionFilter function to the except filter of __try
/__except
or try
/__except
blocks. However, program behavior is undefined when this function is called outside of a __try
/__except
or try
/__except
block.
Topics
- Syntax of Structured Exceptions (C++)
- Handling Structured Exceptions (C++)
- Filtering Structured Exceptions (C++)
- Mixing Standard Exceptions with Structured Exceptions (C++)
- Defining Structured Exceptions (C++)
- Raising Structured Exceptions (C++)
- SEH Termination Blocks (C++)
- C++Builder Exception Handling Compiler Options