Sobes.tech
Junior

C# да ката чыгуу үчүн бир нече catch блоктору болушу мүмкүнбү?

sobes.tech AI

AIден жооп

Һо, көптөгөн catch блоктору болушу мүмкүн. Бул ар түрдүү түрдөгү исключениелерди ар башкача иштетүүгө мүмкүндүк берет.

Исключение пайда болгондо, CLR catch блокторун жогорудан төмөн карап, биринчи блоктон баштап текшерет. Биринчи catch блогу, анын түрү чыккан исключениенин түрүнө дал келген же анын негизги классына туура келген болсо, ишке ашырылат.

try
{
    // Исключение чыгара турган код
}
catch (ArgumentNullException ex)
{
    // ArgumentNullException исключениесин иштетүү
}
catch (IndexOutOfRangeException ex)
{
    // IndexOutOfRangeException исключениесин иштетүү
}
catch (Exception ex)
{
    // Бардык башка исключениелерди иштетүү (негизги класс Exception)
    // Бул блок адатта акыркы орунда болот
}
finally
{
    // Ар дайым ишке ашырылуучу код, исключение болсо да, болбосо да
}

catch блокторун, көбүрөөк так түрдөгү исключениелерден азыраак так түрдөгүлөргө (негизги класстарга) тартипте жайгаштыруу маанилүү. catch (Exception ex) блогу акыркы орунда болушу керек, анткени ал бардык исключениелерди кармайт.