Nivelul 3 — Funcții
Tratarea erorilor
Note originale de SunDiaL · Vezi sursa în engleză
Terminologia este următoarea: o funcție aruncă erori (numite excepții), iar funcția ta încearcă să ruleze o altă funcție și capturează erorile aruncate. Exemplu:
float Divide(float x, float y)
{
if(y == 0)
{
throw new Exception("Cannot divide by zero")
}
return x/y;
}
void Main()
{
float x = 10;
float y = 0;
try
{
float result = Divide(x, y);
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
}
}
Acesta este cel mai simplu exemplu de tratare a excepțiilor sau erorilor. Mai sunt însă câteva lucruri de spus:
- Poți captura mai multe excepții și le poți trata diferit. Faci asta înlănțuind mai multe blocuri catch. Ordinea contează.
try{}
catch(ArgumentException e) {}
catch(NullReferenceException e) {}
catch(Exception e) {}
- Poți folosi un
finallyalături detry-catchpentru a avea un bloc de cod care se execută indiferent dacă apare sau nu o excepție.
De obicei este folosit pentru eliberarea resurselor (de exemplu, închiderea fișierelor, a conexiunilor la baze de date, oprirea firelor de execuție care rulează mult timp etc.).
try {}
catch {} //the exception can be omitted if it's not used for anything
finally {}