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