Try, catch va finally ga doir masalalar yechish. Istisnolarni yuzaga keltirish


Download 29.09 Kb.
bet1/2
Sana21.09.2023
Hajmi29.09 Kb.
#1683744
  1   2
Bog'liq
31-mavzu. try, catch va finally ga doir masalalar yechish. Istisnolarni yuzaga keltirish

try, catch va finally ga doir masalalar yechish. Istisnolarni yuzaga keltirish


C# da istisno holat sintaksisi.[try/catch]
Istisno holat faqat dastur bajarilish vaqtida sodir bo'ladi. Dastur ishlab turgan vaqtdagi kelib chiqadigan xatoliklarni C# ning istisno holatlarni qayta ishlash tizimidan foydalanib boshqariladigan va tizimli qayta ishlash mumkin. Istisno holatlarni qayta ishlashning asosiy afzalligi shundan iboratki, bu sizga kodning ko'p qismini avtomatlashtirishga imkon beradi, ilgari har qanday yirik dasturga xatolarni boshqarish uchun qo'lda kiritilishi kerak edi. Shunday qilib, agar dastur dasturlash tilida istisnolardan foydalanmasdan yozilgan bo'lsa, unda xato kodlarini qaytaradigan metodlar muvaffaqiyatsiz bajariladi va siz ularni har bir chaqiruvda ularni qo'lda tekshirishga majbur bolasiz.
C# -da istisnolardan foydalanish to'rtta kalit so'zlar bilan tashkil etilgan: try, catch, throw va finally. Ular o'zaro bog'liq kichik tizimni tashkil qiladi, unda kalit so'zlardan biri boshqasini ishlatishni nazarda tutadi. Yuqoridagi har bir kalit so'zning maqsadi va qo'llanilishi batafsil muhokama qilib chiqamiz. Avvalo, siz ularning har birining istisnolardan foydalanishdagi roli haqida umumiy tushuncha beramiz. Shuning uchun ularning ishlash printsipi quyida qisqacha tavsiflanadi. Istisno holatlarini kuzatish kerak bo'lgan dastur bayonotlari try blokiga kiritilgan. Agar istisno try bloki ichida ro'y bersa, istisno tashlanadi. Ushbu istisno dastur kalit kodida tutish so'zi bilan belgilangan bayonot yordamida qandaydir ratsional tarzda qo'llanishi va ko'rib chiqilishi mumkin. Tizim bo'yicha istisnolar avtomatik ravishda ish vaqti tizimi tomonidan yaratiladi. Throw kalit so'zi istisnolarni qo'lda yaratish uchun ishlatiladi. Try blokidan chiqqandan keyin bajarilishi kerak bo'lgan har qanday kod finally blokga joylashtirilgan.
System.Exception namespace C# dagi barcha istisno holatlar malum bir sinflarni ichida saqlanadi. Barcha istisno holatlar joylashgan sinflar System namespace(nomlar fazosi)iga kiruvchi C# da o'rnatilgan Exception qismidan kelib chiqadi. Shuning uchun barcha istisnolar System.Exception namespacening qism sinflariga tegishli. Istisno holatining eng muhim Exception qism sinfi System.Exception namespacega tegishlidir. C # tizimida ishlash vaqtida kelib chiqadigan barcha istisnolar aynan shu sinfdan kelib chiqadi. C # dastur tuzuvchilarga ushbu vaziyatlarni boshqarish imkoniyatini beradi. Buning uchun C # da try…catch…finally konstruktsiyasi mo'ljallangan
try bloki – dastur bajarishi lozim bo’lgan kodni inkapsulyatsiya qiladi. Agar ushbu jarayonda xatolik yoki mumkin bo’lmagan hol yuzaga kelsa, xatolik sodir bo’lganda bajariladigan blok chaqiriladi.
сatch bloki – try blokidan so’ng kelib, xatolik yuz berganda bajariladigan kodni ishga tushiradi.
finally bloki – doimo bajariluvchi kod, yani try blokidan keyin yoki catch blokidan keyin bajariladi. Ushbu blok har doim bo’lishi shart emas. Undan goto operatori orqali chiqish mumkin emas. Quyida istisnolardan foydalanish uchun try/catch/finally bloklarni aniqlashning umumiy shakli keltirilgan:

try
{


// Bu yerda tekshiriluvchi kod turadi
// Ushbu kod xatolikni hosil qilishi mumkin
}
catch (xatolik turi1)
{
// try blokida xatolik yuzaga kelganda
// ushbu kod bajariladi
}
catch (xatolik turi2)
{
// try blokida xatolik yuzaga kelganda
// ushbu kod bajariladi
}
finally
{
// Ushbu blokdagi kod yuqoridagi bloklar
// bajarilgandan so’ng bajariladi
}

C# istisnosiz ishlashning asosiy qismi try va catch kalit so'zlar juftligi. Ushbu kalit so'zlar birgalikda ishlaydi va ularni alohida ishlatib bo'lmaydi. Quyida istisnolarni boshqarish uchun try / catch bloklarini aniqlashning umumiy shakli keltirilgan:


try
{
// Xatolarni tekshirish uchun kod bloki.
}
catch {ExcepTypel exOb)
{
// ExcepTypel turidagi istisno ishlovchisi.
}
catch {ExcepType2 exOb)
{
ExcepType2 turidagi istisno ishlovchisi.
}
bu yerda ExcepType - tashlanadigan istisno turi. Istisno try operatori tomonidan tashlanganida, u juftlikni ushlanib qoladi, keyin istisnoga ishlov beradi. Istisno turiga qarab, tegishli catch operatori ham bajariladi. Shunday qilib, agar tashlangan istisno turlari va catch blokida ko'rsatilganlar mos keladigan bo'lsa, u holda bu blok bajariladi va qolganlari o'tkazib yuboriladi. Istisno ushlanganda, istisno exOb o'zgaruvchisi o'z qiymatini oladi. Oddiy istisnolardan foydalanish misoli Istisno holatini kuzatish va ushlashni namoyish etish uchun oddiy misolni ko'rib chiqamiz. Bizga ma’lumki, massivni chegaralaridan tashqarida indeksatsiya qilishga urinish xatoga olib keladi. Ushbu xato yuzaga kelganda, CLR .NET Framework uchun belgilangan IndexOutOf RangeExceptionni tashlaydi. Quyidagi dasturda bunday istisno tashlanadi va keyin ushlanadi.



Download 29.09 Kb.

Do'stlaringiz bilan baham:
  1   2




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling