Exceptions: Difference between revisions

m
Line 57:
MODE OBJECTFOO = STRUCT ( PROC (REF OBJECTFOO)BOOL foo event mended, ... );
 
PROC on foo event = (REF OBJECTFOO instancefoo, PROC (REF OBJECTFOO)BOOL foo event)VOID: (
foo event mended OF instancefoo := foo event
);
 
Line 64:
===Raise an exception===
<pre>
OBJECTFOO instancefoo proxy := instancefoo base; # event routines are specific to an instancefoo #
 
on foo event(foo proxy, raise foo event);
 
WHILE TRUE DO
# now raise example foo event #
IF NOT (foo event mended OF instancefoo proxy)(instancefoo proxy) THEN undefined # trace back # FI
OD;
 
Line 77 ⟶ 79:
except foo event:
IF ... THEN # Alas, cannot handle it here continue propagation of #
IF NOT (foo event mended OF instancefoo base)(instancefoo base) THEN undefined # trace back # FI
FI
</pre>
===Handle an exception===
<pre>
PROC raise foo event(REF OBJECTFOO instancefoo)BOOL:
IF mend foo(instancefoo) THEN
TRUE # continue #
ELSE