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), "Меъёри бояд мусбат бошад."); // Генератсияи ихтисоси худӣ
}
// ... логикаи минбаъда
}
}