Middle
Оё фарқият дар тартиби навиштани блокҳои catch вуҷуд дорад?
sobes.tech AI
Ҷавоб аз AI
Бале, мавҷуд аст. Блокҳои catch ба таври пайдарпай коркард мешаванд. Исключенияи бештар мушаххас бояд пеш аз умумӣ ҷойгир шаванд.
try
{
// Код, ки метавонад истисно эҷод кунад
}
// Исключениеи бештар мушаххас
catch (System.FormatException ex)
{
// Ҳал кардани хатои формати
}
// Исключениеи камтар мушаххас
catch (System.Exception ex)
{
// Ҳал кардани ҳамаи истисноҳои дигар
}
Агар истиснои умумиро аввал гузоред, пас блоки catch бештар мушаххас ҳеҷ гоҳ барои истисноҳое, ки аз он мерос мегиранд, дастрас намешавад. Масалан, FormatException аз Exception мерос мегирад. Агар catch (Exception ex) аввал бошад, он ҳам FormatException-ро мегирад.
Тартиби нодуруст:
try
{
// Код, ки метавонад истисно эҷод кунад
}
// Исключениеи умумӣ
catch (System.Exception ex)
{
// Ҳал кардани ҳамаи истисноҳо, аз ҷумла `FormatException`
}
// Ин блок ҳеҷ гоҳ барои `FormatException` дастрас намешавад,
// зеро аллакай аз ҷониби блоки қаблӣ гирифта шудааст
catch (System.FormatException ex)
{
// Ин код дар ин ҳолат дастрас нест
}
Кодекси C# барои блоки catch дастрас набударо огоҳӣ ё хато мебарорад.