ON ERROR GOTO [branchLabel]
Omschrijving:
Liberty BASIC 4 ondersteunt ON ERROR GOTO. Verscheidene van de QBasic foutencodes
worden ondersteund, maar sommige zijn niet relevant, en er zijn enkele nieuwe bijgekomen.
Wanneer een fout optreedt, bevatten de speciale variabelen Err en Err$
een numerieke en een string waarde die beschrijven welke soort fout optrad.
Sommige soorten fouten hebben geen numerieke waarde, waarbij Err dan nul zal zijn.
Als een fout in een een gebruikersfunctie of subroutine voorkomt,
zal de Liberty BASIC de huidige functie of de subroutine verlaten en
zal alle volgende functies en subroutines blijven verlaten totdat
het de ON ERROR handler vindt.
Als een fout wordt ontdekt, kan een programma proberen om uitvoering van het programma
te hervatten met de RESUME statement.
Hier is een korte lijst van error codes:
3 RETURN without GOSUB
4 Read past end of data
8 Branch label not found
9 Subscript out of range
11 Division by zero
53 OS Error: The system cannot find the file specified.
58 OS Error: Cannot create a file when that file already exists.
55 Error opening file
52 Bad file handle
62 Input past end of file
Gebruik:
on error goto [errorHandler]
open "sillyfilename.txt" for input as #f
close #f
end
[errorHandler]
print "Error string is " + chr$(34) + Err$ + chr$(34)
print "Error number is ";Err
end
Het bovenstaande programma zal in de mainwin het volgende printen:
Error string is "OS Error: The system cannot find the file specified."
Error number is 53
'demonstrate the use of RESUME
on error goto [whoops]
global divideBy
call causeWhoops
end
[whoops]
print "whoops!"
print "Error "; Err$; " "; " code "; Err
divideBy = 2
resume
sub causeWhoops
print 10 / divideBy
end sub
RESUME
Omschrijving:
Het RESUME statement kan gebruikt worden in een poging een programma te hervatten nadat
een error (fout) is opgevangen door het ON ERROR GOTO statement. Er is geen andere manier
om een alternatief te specificeren.
Als de fout met een sub of een functie wordt behandeld, dan moet het RESUME statement
worden toegepast voordat de sub of de functie wordt beëindigd anders krijgt u
een foutmelding bij de hervattingspoging RESUME.
Gebruik:
'demonstrate the use of RESUME
on error goto [whoops]
global divideBy
call causeWhoops
end
[whoops]
print "whoops!"
print "Error "; Err$; " "; " code "; Err
divideBy = 2
resume
sub causeWhoops
print 10 / divideBy
end sub