Error handling
attempt
Evaluates a block and returns the result or none
if an error occur.
>> attempt [a: 10 b: 9] ;first lets try with no errors...
== 9
>> a
== 10 ;... no problems here!
>> attempt [a: 10 nosyntax] ;nosyntax has no value: ERROR!
== none
try
Tries to evaluate a block. Returns the value of the block, but if an error!
occurs, the block is abandoned, and an
error value is returned.
To identify a block that generates an error without actually having the error output printed, we use the function error?
.
You may ask why not use attempt
instead of error?
& try
. I think the answer is that the error?
& try
combination returns true
and false
, instead of none
or an evaluation. This is useful when used inside other structures.
>> error? [nosyntax]
== false ;nosyntax has no value and it generates an error,
;but only if evaluated. In itself, is not a error! datatype.
>> try [nosyntax]
*** Script Error: nosyntax has no value
*** Where: try
*** Stack: ; just "try" does not work, you get an error!!
>> error? try [nosyntax]
== true ;OK!
catch & throw
These are used to handle errors, but I could not figure how. Does not seem to be a beginner's issue, but there is an explanation here.