Intern
Ce sunt excepțiile în limbajul de programare C#?
sobes.tech AI
Răspuns de la AI
Excepțiile în C# sunt situații anormale sau erori care apar în timpul execuției programului și întrerup fluxul normal.
Ele permit separarea codului de gestionare a erorilor de codul principal al logicii aplicației și oferă o abordare mai structurată pentru gestionarea erorilor.
Aspecte principale ale excepțiilor în C#:
- Tipuri de excepții: C# are o ierarhie de clase de excepții standard care moștenesc din clasa de bază
System.Exception. De exemplu,System.NullReferenceException,System.DivideByZeroException,System.IO.FileNotFoundException. De asemenea, se pot crea clase de excepții personalizate. - Generarea de excepții (throw): Excepția este generată folosind cuvântul cheie
throw. - Capturarea excepțiilor (try-catch): Blocul
tryconține codul care poate genera o excepție. Bloculcatchcapturează un anumit tip de excepție și execută codul pentru gestionarea acesteia. - Blocul finally: Blocul
finallyse execută întotdeauna, indiferent dacă a fost generată o excepție sau nu. Este adesea folosit pentru eliberarea resurselor. - Operatorul using: O metodă mai convenabilă de gestionare a resurselor, care garantează apelarea metodei
Dispose. Este similar cu construcțiatry-finallypentru obiecte care implementează interfațaIDisposable. - Filtre de excepții: Permite adăugarea unei condiții la blocul
catchpentru o gestionare mai specifică a excepțiilor.
Exemplu de utilizare:
public class Example
{
public void ProcessData(int denominator)
{
try
{
int result = 10 / denominator; // Poate genera DivideByZeroException
Console.WriteLine($"Rezultat: {result}");
}
catch (DivideByZeroException ex) // Capturăm o excepție specifică
{
Console.WriteLine("Eroare: Nu se poate împărți la zero.");
// Înregistrarea excepției, dacă este necesar
// Console.WriteLine($"Detalii despre excepție: {ex.Message}");
}
catch (Exception ex) // Capturăm orice altă excepție
{
Console.WriteLine($"A apărut o eroare neașteptată: {ex.Message}");
}
finally // Acest bloc se va executa întotdeauna
{
Console.WriteLine("Procesare finalizată.");
}
}
public void UsingExample()
{
// Exemplu de utilizare a using pentru apelarea automată a Dispose
using (StreamReader reader = new StreamReader("file.txt"))
{
string line = reader.ReadLine();
Console.WriteLine(line);
} // Aici, reader.Dispose() este apelat automat, chiar dacă apare o excepție
}
public void ThrowExample(int value)
{
if (value < 0)
{
throw new ArgumentOutOfRangeException(nameof(value), "Valoarea trebuie să fie nenegativă."); // Generarea unei excepții proprii
}
// ... logica ulterioară
}
}
Utilizarea excepțiilor ajută la crearea unor aplicații mai fiabile, mai ușor de citit și de întreținut, separând gestionarea erorilor de logica principală.