Junior
C# da bir nechta catch bloklari bo'lishi mumkinmi?
sobes.tech AI
AIdan javob
Ha, bir nechta catch bloklari bo'lishi mumkin. Bu, turli xil istisnolarni turlicha ishlash imkonini beradi.
Istisno yuzaga kelganda, CLR yuqoridan pastga qarab catch bloklarini tekshiradi, birinchi bo'lib. Birinchi catch bloki, chiqarilgan istisno turiga mos keladigan yoki uning asosiy sinfiga teng bo'lgan bo'lsa, bajariladi.
try
{
// Istisno chiqarishi mumkin bo'lgan kod
}
catch (ArgumentNullException ex)
{
// ArgumentNullException istisnosini ishlash
}
catch (IndexOutOfRangeException ex)
{
// IndexOutOfRangeException istisnosini ishlash
}
catch (Exception ex)
{
// Boshqa barcha istisnolarni ishlash (Asosiy sinf Exception)
// Bu blok odatda oxirida joylashtiriladi
}
finally
{
// Har doim bajariladigan kod, istisno bo'lsa ham, bo'lmasin
}
catch bloklarini, aniqroq istisno turlaridan kamroq aniq turlarga to'g'ri tartibda joylashtirish muhimdir. catch (Exception ex) bloki oxirida bo'lishi kerak, chunki u barcha istisnolarni qamrab oladi.