--- ex.pod 2002/01/29 20:10:53 1.9
+++ ex.pod 2002/01/30 10:33:36 1.10
@@ -36,13 +36,13 @@
B<ex_t> I<variable>;
-B<ex_try> { ... } B<ex_catch> (I<variable>) { ... }
+B<ex_try> {...} [B<ex_cleanup> {...}] B<ex_catch> (I<variable>) {...}
B<ex_throw>(I<class>, I<object>, I<value>);
B<ex_rethrow>;
-B<ex_shield> { ... };
+B<ex_shield> {...};
if (B<ex_catching>) ...
@@ -53,7 +53,7 @@
B<OSSP ex> is a small ISO-C++ style exception handling library for use
in the ISO-C language. It allows you to use the paradigm of throwing
and catching exceptions in order to reduce the amount of error handling
-code in without making your program less robust. This is achieved
+code without making your program less robust. This is achieved
by directly transferring exceptional return codes (and the program
control flow) from the location where it was raised (throw point) to
the location where it is handled (catch point) - usually from a deeply
@@ -133,22 +133,25 @@
=back
-=item B<ex_try> { ... } B<ex_catch> (I<variable>) { ... }
+=item B<ex_try> {...} [B<ex_cleanup> {...}] B<ex_catch> (I<variable>) {...}
This is the main construct provided by B<OSSP ex>. It is modeled after
the ISO-C++ C<try>-C<catch> construct which in turn is very similar to
an ISO-C C<if>-C<else> construct. It consists of an B<ex_try> block
which forms the dynamic scope of the exception handling (i.e. exceptions
-thrown there are or from routines called from there are catched) and a
+directly thrown there or thrown from subroutines are catched), an
+optional B<ex_cleanup> block for performing cleanup sequences and a
B<ex_catch> block where the caught exceptions are handled.
-The B<ex_trx> and B<ex_catch> cannot be used seperately, they work only
-in combination. In contrast to ISO-C++ there is only one B<ex_catch>
-block and not multiple ones (all B<OSSP ex> exceptions are of the
-same ISO-C type B<ex_t>). If an exception is caught, it is stored in
-I<variable> for inspection (or re-throwing) inside the B<ex_catch>
-block. Although declared outside, the I<variable> is only valid
-within the B<ex_catch> block. But it can be re-used in following
+# CONTROL FLOW FIXME!
+
+The B<ex_try>, B<ex_cleanup> and B<ex_catch> cannot be used seperately,
+they work only in combination. In contrast to ISO-C++ there is only
+one B<ex_catch> block and not multiple ones (all B<OSSP ex> exceptions
+are of the same ISO-C type B<ex_t>). If an exception is caught, it
+is stored in I<variable> for inspection (or re-throwing) inside the
+B<ex_catch> block. Although declared outside, the I<variable> is only
+valid within the B<ex_catch> block. But it can be re-used in following
B<ex_try>/B<ex_catch> constructs, of course.
The B<ex_try> block is a regular ISO-C language block, but it is not
@@ -182,7 +185,7 @@
I<variable>.ex_value) but with the difference that the C<ex_file>,
C<ex_line> and C<ex_func> elements of the thrown exception are kept.
-=item B<ex_shield> { ... }
+=item B<ex_shield> {...}
This directive executes its block while shielding against the throwing
of exceptions, i.e., in the dynamic scope of B<ex_shield> any
@@ -232,7 +235,7 @@
This is called by the epilog of B<ex_try> to perform additional
operations at the new (restored) machine context after an exception was
-cought. Usually this is a no-operation macro.
+caught. Usually this is a no-operation macro.
=item B<__ex_mctx_restore>(I<mctx>)
|