Middle
Catch bloklarını yazma ardıcıllığında fərq varmı?
sobes.tech Süni İntellekt
AI-dan cavab
Bəli, var. catch blokları ardıcıl işlənir. Daha spesifik istisnalar daha ümumi olanlardan əvvəl gəlməlidir.
try
{
// Xəta törədə biləcək kod
}
// Daha spesifik istisna
catch (System.FormatException ex)
{
// Format xətasının idarə olunması
}
// Daha az spesifik istisna
catch (System.Exception ex)
{
// Bütün digər istisnaların idarə olunması
}
Əgər daha ümumi istisnayı ilk yerləşdirsəniz, daha spesifik catch bloku heç vaxt əldə olunmayacaq, çünki o, daha ümumi olanın varisidir. Məsələn, FormatException Exception-ın varisidir. Əgər catch (Exception ex) ilk olarsa, o, həmçinin FormatException-ı tutacaq.
Yanlış ardıcıllıq:
try
{
// Xəta törədə biləcək kod
}
// Ümumi istisna
catch (System.Exception ex)
{
// Bütün istisnaların idarə olunması, o cümlədən FormatException
}
// Bu blok heç vaxt FormatException üçün əldə olunmayacaq,
// çünki artıq əvvəlki blok tərəfindən tutulub
catch (System.FormatException ex)
{
// Bu kod bu halda əlçatmazdır
}
C# kompilyatoru, əlçatmaz catch bloku üçün xəbərdarlıq və ya səhv verəcək.