Zpracování chyb
 
Zacházení s runtime chybami, tedy s chybami běhu, či chybami při provádění programů a funkcí.

FreeBASIC zpracovává chyby následujícími způsoby:
  • Ve výchozím nastavení program s chybami nedělá nic, jsou ignorovány a kód pokračuje. V tomto případě by měly být chyby zpracovávány v následujím řádku pomocí funkce Err.
  • Pokud je kód kompilován s -e nebo -ex nastavením, FreeBASIC použije zpracování chyby jako QB.
  • Budoucí verze OOP z FreeBASIC mohou mít jako Java TRY..CATCH...FINALLY implementovány popisovače výjimek.

NOTE: Tato informace je platná, pokud chyba produkuje OS General Protection Fault (například pokud program zapisuje mimo paměťovou oblast procesů). V těchto případech OS okamžitě zastaví program a vrátí chybu. Tomu se dá vyhnout jen zevnitř FreeBASIC.

Výchozí zpracování chyb


Výchozím chováním FreeBASIC je vystavit ERR proměnnou a pokračovat.

Dim As Integer e
Open "xzxwz.zwz" For Input As #1
e = Err
Print e
Sleep


(Program v příkladu předpokládá, že soubor xzxwz.zwz neexistuje). Program neskončí; nastaví ERR proměnnou a pokračuje. Chyba pak může být zpracována v dalším řádku.

Některé IO funkce, jako je Open a Put #... lze použít ve formě funkce, která vrátí číslo chyby, nebo nulu, pokud k chybě nedojde.

Print Open ("xzxwz.zwz" For Input As #1)
Sleep


QuickBASIC-ovské zpracování chyb


V případě použití přepínačů -e nebo -ex při kompilaci, bude mít program povoleno QB-like zacházení s chybami. Neexistuje-li proces pro zacházení s chybou, program se zastaví s chybou.

Upozornění: pokud je použito QB-Like zpracování chyb, měl by být programátor připraven zvládnout všechny chybové stavy.

'' Compilace s QB (-lang qb) dialektem

'$lang: "qb"

On Error Goto FAILED
Open "xzxwz.zwz" For Input As #1
On Error Goto 0
Sleep
End

FAILED:
Dim e As Integer
e = Err
Print e
Sleep
End


On Error nastaví manipulační rutinu, na kterou bude program skákat, když je nalezena chyba. On Error Goto 0 vypne zpracování chyb.

Pokud není nastavena rutina pro manipulaci s chybou a chybě dojde, program se zastaví a pošle na výstupní konzoli chybovou zprávu.
Aborting program due to runtime error 2 (file not found)
 
Rutina pro zacházení s chybami může být na konci programu, jako v QB. On Local Error příkaz umožňuje nastavení místní antichybové rutiny na konci téhož Sub nebo Function, v němž k chybě dojde.

'' Compile with -e
'' The -e command line option is needed to enable error handling.

Declare Sub foo
  foo
Sleep

Sub foo
    
    Dim filename As String
    Dim errmsg As String
    filename = ""
    On Local Error Goto fail
  Open filename For Input Access Read As #1
    Print "No error"
    On Local Error Goto 0
    Exit Sub
    
  fail:
  errmsg = "Error " & Err & _
           " in function " & *Erfn & _
           " on line " & Erl
  Print errmsg
    
End Sub


V případě, že je použit přepínač -e (bez ohledu na -lang dialekt), musí obslužná rutina chyb ukončit program.
S -ex a -lang qb dialektem, může chybová rutina skončit pomocí Resume (opakování tvrzení, které způsobilo chybu) nebo Resume Next (pokračuje na další instrukce) .

Chybové kódy


Viz Runtime chybové kódy - zde je vypsán seznam číselných kódů chyb a jejich přidružený význam.

Není definován žádný uživatelský rozsah chybových kódů. V případě takové chyby Error se používá nadstavený chybový kód. Pro svá nastavení je moudré používat vysoké hodnoty, aby nedocházelo ke kolizím se seznamem vestavěných chybových kódů. (Tento vestavěný seznam může být v kterékoliv vyšší verzi rozšířen.)

Viz též
Překlad: Gmisiycs 8.2.2016