up
previous
next
Catch
Syntax
Catch C EndCatch;
Catch C In E EndCatch;
where C is a sequence of commands and E is a variable identifier.
Summary
catch an error
Description
Usually, when an error occurs during the execution of a command, the
error is automatically propagated out of the nesting of the
evaluation. This can be prevented with the use of
Catch
.
If an error occurs during the execution of C, then it is captured by
the command
Catch
and (in the second form) assigned to the variable
E. If no error occurs, then E will contain the value
Null
. Note
the use of the function
GetErrMesg
in the example below.
IMPORTANT NOTE: There is a bug in
Catch
. Any
Return
command used
inside
Catch
must return some value. If not, the
Return
command
will just return from the Catch-EndCatch statement; it will not return from
the function within which the statement is embedded. There is an
example below.
example
Define Test(N)
Catch
PrintLn(1/N);
In E EndCatch;
If Type(E) = ERROR Then Print("An error occurred: ", GetErrMesg(E)) EndIf;
EndDefine;
Test(3);
1/3
-------------------------------
Test(0);
An error occurred: Division by zero
-------------------------------
--Illustration of the BUG --
Define Test2()
Catch
Print("Hello ");
Return; -- incorrect: no value is returned
EndCatch;
PrintLn("world.");
EndDefine;
Test2();
Hello world.
-------------------------------
Define Test3()
Catch
Print("Hello ");
Return 3; -- correct a value is returned
EndCatch;
PrintLn("world.");
EndDefine;
Test3();
Hello 3
-------------------------------
See Also