===== OnError (Instrucțiune) =====
> **Engleză:** //**ON** = pornit; **ERROR** = eroare//
==== Format ====
**onerror** [[labelprogramsyntax|etichetă]]
==== Descriere ====
Instrucțiunea **OnError** pornește o capcană care să capteze și să trateze erorile de execuție. Din momentul în care o capcană este activă, în cazul unei erori de execuție, aceasta din urmă nu mai este afișată în fereastra "Ieșire Text", iar programul nu mai este oprit din execuție.
O capcană **OnError** activă întrerupe programul și execută un salt de tip [[GosubReturn|Gosub]] la [[labelprogramsyntax|eticheta]] menționată ori de câte ori are loc o eroare. După ce codul de la eticheta menționată este executat și se întâlnește instrucțiunea [[return|Return]], execuția programului este reluată din același punct în care a fost întreruptă când a apărut eroarea.
Capcanele de erori definite cu **OnError** sunt păstrate într-o stivă, astfel încât doar ultima capcană definită va fi cea activă. Pentru a elimina ultima capcană din stivă se va utiliza instrucțiunea [[offerror|OffError]].
De menționat este faptul că aceste capcane sunt inactive în cadrul capcanelor definite prin blocurile de tip [[Try|Try / Catch / End Try]].
==== Exemplu ====
# test pentru tartarea erorilor
onerror capcana
print 1
a = 0/0
print 2
open 999, "fișier_imaaginar"
print 3
i = imageload("http://adresainexistenta.net/imagine.jpg")
print "Rulează în continuare"
# oprește captarea erorilor
offerror
print 4
a = 0/0
print "niciodată nu va ajunge aici"
end
capcana:
# aici se vor gestiona erorile întâlnite
print "Capcană - eroare la linia: ["; lasterrorline; "]; cod eroare: ["; lasterror; "]; mesaj: ["; lasterrormessage; "]; informații suplimentare: ["; lasterrorextra; "]"
return
va afișa:
1
Capcană - eroare la linia: [4]; cod eroare: [50]; mesaj: [Division by zero]; informații suplimentare: []
2
Capcană - eroare la linia: [6]; cod eroare: [5]; mesaj: [Invalid File Number]; informații suplimentare: []
3
Capcană - eroare la linia: [8]; cod eroare: [93]; mesaj: [Error downloading file]; informații suplimentare: [Host adresainexistenta.net not found]
Rulează în continuare
4
ERROR on line 13: Division by zero.
Vezi și exemplul de utilizare din pagina instrucțiunii [[ThrowError|ThrowError]].
==== Vezi și ====
{{page>ro:start#Tratarea excepțiilor&noheader}}
==== Istoric ====
|0.9.6z|Adăugată în acestă versiune|
|1.99.99.33|Removed the ability to use a subroutine for error trapping|