Mega Code Archive

 
Categories / Delphi / Strings
 

How does delphis exception handling work

The basic structure goes something like this: p := new(big_thing); try blah(p); foo(p); finally dispose(p); end; The first line allocates a big block of memory. Then, in the "try" block, we execute several statements, each of which might produce an error--or, in other words, "raise an event." If an error does occur, the rest of the "try" block will be skipped, "finally" blocks will be executed. If there are no errors, then the "finally" block will be entered when the last statement in the "try" block completes. So, either way, the big block of memory gets freed. These "try/finally" blocks will trap anything up to and including a Windows GPF. In addition, you can construct "except" blocks which can provide local error handling either for all errors or for particular types of error; and you can also create your own global error handler to trap exceptions that aren't otherwise handled by try blocks. See Chapter 7 in the Delphi User's Guide for more details.