Intern
Kas ir izņēmumi C# programmēšanas valodā?
sobes.tech AI
Atbilde no AI
C# izņēmumi ir patoloģiskas situācijas vai kļūdas, kas rodas programmas izpildes laikā un traucē tās normālo plūsmu.
Tie ļauj atdalīt kļūdu apstrādes kodu no galvenā programmas loģikas koda un nodrošina strukturētāku pieeju kļūdu pārvaldībai.
Galvenie C# izņēmumu aspekti:
- Tipi: C# ir standarta izņēmumu klases hierarhija, kas mantojas no pamatklases
System.Exception. Piemēram,System.NullReferenceException,System.DivideByZeroException,System.IO.FileNotFoundException. Ir arī iespējams izveidot savas izņēmumu klases. - Izņēmuma ģenerēšana (throw): Izņēmums tiek ģenerēts ar atslēgvārdu
throw. - Izņēmumu apstrāde (try-catch):
tryblokā ir kods, kas var radīt izņēmumu.catchblokā tiek noķerts konkrēts izņēmuma tips un izpildīts tā apstrādes kods. - Beigu bloks (finally):
finallybloks vienmēr tiek izpildīts, neatkarīgi no tā, vai ir noticis izņēmums vai nē. To bieži izmanto resursu atbrīvošanai. usingoperators: Ērtāks veids resursu pārvaldībai, kas garantēDisposemetodes izsaukšanu. Tas ir līdzīgstry-finallykonstrukcijai objektiem, kas īstenoIDisposableinterfeisu.- Izņēmumu filtri: ļauj pievienot nosacījumu
catchblokam, lai specifiskāk apstrādātu izņēmumus.
Piemērs lietošanai:
public class Example
{
public void ProcessData(int denominator)
{
try
{
int result = 10 / denominator; // Var radīt `DivideByZeroException`
Console.WriteLine($"Rezultāts: {result}");
}
catch (DivideByZeroException ex) // Noķer konkrētu izņēmumu
{
Console.WriteLine("Kļūda: nevar dalīt ar nulli.");
// Izņēmuma reģistrēšana, ja nepieciešams
// Console.WriteLine($"Izņēmuma detaļas: {ex.Message}");
}
catch (Exception ex) // Noķer jebkuru citu izņēmumu
{
Console.WriteLine($"Neparedzēta kļūda: {ex.Message}");
}
finally // Šis bloks vienmēr tiks izpildīts
{
Console.WriteLine("Apstrāde pabeigta.");
}
}
public void UsingExample()
{
// Piemērs, izmantojot `using` automātiskai `Dispose` izsaukšanai
using (StreamReader reader = new StreamReader("file.txt"))
{
string line = reader.ReadLine();
Console.WriteLine(line);
} // Šeit `reader.Dispose()` tiek automātiski izsaukts, pat ja notiek izņēmums
}
public void ThrowExample(int value)
{
if (value < 0)
{
throw new ArgumentOutOfRangeException(nameof(value), "Vērtībai jābūt nenegatīvai."); // Sava izņēmuma ģenerēšana
}
// ... turpmākā loģika
}
}