Intern
რა არის გამონაკლისები C# პროგრამირების ენაში?
sobes.tech AI
პასუხი AI-სგან
C# тилиндеги чыгымдар — бул программа ишке ашырылуу учурунда пайда болгон аномалиялар же ката, алар анын нормалдуу агымын бузат.
Алар ката иштетүү кодун негизги логика кодуна бөлүп, ката башкарууну структуралаштырылган жол менен жүргүзүүгө мүмкүндүк берет.
C# тилиндеги чыгымдардын негизги аспектилери:
- Типтери: C# стандарттык чыгымдар класстарынын хиерархиясына ээ, алар
System.Exceptionнегизги класынан мурас алат. Мисалы,System.NullReferenceException,System.DivideByZeroException,System.IO.FileNotFoundException. Өзгөчө чыгымдар класстарын да түзүүгө болот. - Чыгымдарды түзүү (throw): Чыгым
throwачкыч сөзү аркылуу түзүлөт. - Чыгымдарды кармоо (try-catch):
tryблогу чыгым түзө алчу кодду камтыйт.catchблогу белгилүү бир чыгым түрүн кармайт жана аны иштетүү кодун аткарат. - Акыркы блок (finally):
finallyблогу дайыма аткарылат, чыгым пайда болгон же болбогон учурда да. Ал ресурстарды бошотуу үчүн колдонулат. usingоператору: Ресурстарды башкаруунун ыңгайлуу жолу, алDisposeметоду чакырылышын кепилдейт. Булtry-finallyструктурасына окшошIDisposableинтерфейсин ишке ашырган объекттер үчүн.- Чыгымдар фильтрлери:
catchблогуна шарт кошууга мүмкүндүк берет, чыгымдарга карата так иштетүү үчүн.
Куллануу мисалы:
public class Example
{
public void ProcessData(int denominator)
{
try
{
int result = 10 / denominator; // Мүмкүнчүлүк бар, DivideByZeroException түзүү
Console.WriteLine($"Натыйжа: {result}");
}
catch (DivideByZeroException ex) // Конкреттүү чыгымды кароо
{
Console.WriteLine("Ката: нөлгө бөлүү мүмкүн эмес.");
// Чыгымды каттоо, керек болсо
// Console.WriteLine($"Чыгымдын деталдары: {ex.Message}");
}
catch (Exception ex) // Башка бардык чыгымдарды кармоо
{
Console.WriteLine($"Күтүлбөгөн ката: {ex.Message}");
}
finally // Бул блок дайыма аткарылат
{
Console.WriteLine("Иш аяктады.");
}
}
public void UsingExample()
{
// `using` колдонуу мисалы, автоматтык `Dispose` чакыруу үчүн
using (StreamReader reader = new StreamReader("file.txt"))
{
string line = reader.ReadLine();
Console.WriteLine(line);
} // Мында `reader.Dispose()` автоматтык түрдө чакырылат, даже если произойдет исключение
}
public void ThrowExample(int value)
{
if (value < 0)
{
throw new ArgumentOutOfRangeException(nameof(value), "Мән терс болбошу керек."); // Өзгөчө чыгымды түзүү
}
// ... кийинки логика
}
}