http://alpha-thema-online.uv.ro
Fa-ti si tu propriul forum, pe www.myforum.ro!
Pagina de start a forumului http://alpha-thema-online.uv.ro Autentificare Inregistrare FAQ Membri Cautare

Pagina de start a forumului http://alpha-thema-online.uv.ro » Visual Studio » Tratarea erorilor in VB
Creaza un subiect nou  Raspunde la subiect Subiectul anterior :: Subiectul urmator 
Tratarea erorilor in VB
MesajTrimis: 19/07/2007 17:15 Raspunde cu citat (quote)
Ad_Infinitum
Administrator
Administrator
Ad_Infinitum
Data inscrierii: 23/Iun/2007
Mesaje: 212




Un fapt la care poate se da mai putina importanta in VB este tratarea erorilor. Acestea pot aparea in teribil de mult situatii, de la clasicele impartiri al zero, pina la diverse erori la accesatul unor fisiere, obiecte sau mutle altele.

In mod natural la aparitia unei astfeld e erori este afisat un mesaj de erorare si programul se termina. Insa in functie de datele problemei se pot face multe alte lucruri, de la ignorat toate erorile sau doar un anume tip, pina la scris fisiere de log sau eliberat cine stie ce resurse si conexiuni.

Tehnic astea se rezolva cu instructiunea 'On Error' care are citeva variante:

On Error Resume Next
= absolut orice eroare apare o ignora si merge mai departe la instructiunea urmatoare celei unde a aparut eroarea.

On Error GoTo label
= in caz de eroare merge la eticheta 'label' din program

On Error GoTo 0
= reface sistemul de erori 'default' al VB, cu mesajul de eroare standard.

PE linga acestea exista obiectul Err care contine detalii despre eroare, la care cele mai importante proprietati sint Err.Number ( = numarul erorii) si Err.Description (= scurta descriere cu text).

Sa vedem un mic cod VB cu tratarea erorilor (avem doar o forma cu un buton):

Citat:


Private Sub Command1_Click()
On Error Resume Next
Print 10 / 0

On Error GoTo er1
Print 10 / 0

'Print 10 / 0

Exit Sub

er1:
MsgBox "Eroarea: #" & Err.Number & " - " & Err.Description
On Error GoTo 0
Resume Next
End Sub



Dupa cum vedeti avem de 3 ori impartire la zero (Print ar necesită doar sa scrie pe forma rezultatul). întâia data erorarea e pur si rudimentar ignorata. A 2-a oara sare la eticheta 'er1' unde afiseaza mesajul creat de noi, dupa care activeaza tratarea standard a erorilor VB si continua cu instructiunea urmatoare. Daca o sa decomentati (stergeti apostroful) al 3-lea Print o sa vedeti mesajul standard VB cu erori.

Sa mai complicam un pic acest cod cu un lucru de care putini programatori VB stiu si il folosesc: Erl. Aceasta variabila obtine eticheta liniei la care s-a produs eroarea, daca are eticheta, sau altfel ultima eticheta definita, daca exista.

De exemplu:

Citat:


Private Sub Command1_Click()
10: On Error Resume Next
20: Print 10 / 0

On Error GoTo er1
40: Print 10 / 0

55: Exit Sub

er1:
MsgBox "Eroarea: #" & Err.Number & " - " & Err.Description & " la linia #" & Erl
Resume Next
End Sub


Vedeti ca liniile au niste etichete numerice (nu toate si nu continue). O sa vedeti in mesajul afisat ca linia este 40 la care se produce erorarea (prima erorare e pur si simplu ignorata).

Folosind aceste instructiuni si obiecte puteti scrie cod mult mai prietenos care stie sa trateze diferite erori si sa actioneze in consecinta, nu doar sa afiseze un mesaj de eroare si sa inchida programul.
Vezi profilul utilizatorului Trimite mesaj privat

Tratarea erorilor in VB
 Pagina de start a forumului http://alpha-thema-online.uv.ro » Visual Studio
Nu puteti crea un subiect nou in acest forum
Nu puteti raspunde in subiectele acestui forum
Nu puteti modifica mesajele proprii din acest forum
Nu puteti sterge mesajele proprii din acest forum
Nu puteti vota in chestionarele din acest forum
Ora este GMT + 3 ore  
Pagina 1 din 1  

  
  
 Creaza un subiect nou  Raspunde la subiect  


Fa-ti si tu propriul forum GRATUIT, pe www.myforum.ro
    Powered by phpBB © 2001-2004 phpBB Group. phpBB Skin by Vjacheslav Trushkin.