Ošetření chyb


function!  attempt

Vyhodnotí blok a vrací výsledek nebo vrací none při výskytu chyby.

>> 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

native! try

Pokusí  se o vyhodnocení bloku. Vrací hodnotu bloku ale při výskytu chyby vrací hodnotu  error!.

Pro identifikaci závadného bloku bez tisku chybového hlášení použijeme funkci  error?.

Můžete se ptát proč nepoužít attempt místo error? & try. Domnívám se že proto, že kombinace error? & try vrací true a false místo none nebo provedeného vyhodnocení. To je užitečné při použití uvnitř jiných struktur.

>> 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!

native! catch and native! throw

Tyto příkazy se používají k ošetření chyb. Delší vysvětlení lze nalézt  zde.