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
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
You may ask why not use
attempt instead of
try. I think the answer is that the
try combination returns
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.