Tratarea erorilor — RexDac Academy

RexDac AcademyNote tehnice · Ajută să ai câteva noțiuni de bază
0%Note publicate citite · pe acest dispozitiv

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:

  1. 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) {}
  1. Poți folosi un finally alături de try-catch pentru 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 {}