Istisnolarni qayta ishlash try catch finally konstruktsiyasi



Download 106,86 Kb.
Sana23.01.2022
Hajmi106,86 Kb.
#404745
Bog'liq
Istisnolarni qayta ishlash


Istisnolarni qayta ishlash

try..catch..finally konstruktsiyasi

Ba'zida, dasturni bajarayotganda, oldindan ko'rish yoki oldindan bilish qiyin bo'lgan, ba'zan esa imkonsiz xatolar yuzaga keladi. Masalan, faylni tarmoq orqali uzatishda tarmoq ulanishi kutilmaganda uzilishi mumkin. bunday holatlar istisno deb ataladi. C # tili ishlab chiquvchilarga ushbu vaziyatlarni hal qilish imkoniyatini beradi. Buning uchun C # da try... catch... finally konstruktsiyasi mo‘ljallangan.

try


{

     


}

catch


{

     


}

finally


{

     


}

try ... catch..final blokirovkadan foydalanganda, birinchi navbatda try blokidagi barcha amallar bajariladi. Agar bu blokda istisnolar qo'yilmagan bo'lsa, u bajarilgandan so'ng, oxirgi finally blok bajarila boshlaydi. Keyin try..catch..finally construct o'z ishini yakunlaydi.

Agar try blokida to‘xtatilsa, oddiy bajarish tartibi to‘xtatiladi va CLR muhiti ushbu istisnoni qayta ishlay oladigan catch blokini qidirishni boshlaydi. Agar zarur catch bloki topilsa, u bajariladi va bajarilgandan so‘ng finally bloki bajariladi.

Agar zarur catch bloki topilmagan bo‘lsa, u holda istisno yuz berganda dastur favqulodda bajariladi.

Quyidagi misolni ko‘rib chiqamiz:

class Program

{

    static void Main(string[] args)



    {

        int x = 5;

        int y = x / 0;

        Console.WriteLine($"Natija: {y}");

        Console.WriteLine("Dastur oxiri");

        Console.Read();

    }

}

Bu holatda sonni 0 ga bo‘lish yuzaga keladi, bu holat istisno yuzaga kelishiga olib keladi. Dasturni Visual Studiodan boshlash rejasida ishga tushirishda quyidagilar haqida ma’lumot beradigan oynani ko‘rishimiz mumkin:



Ushbu oynada Systemi.DiivideByZeroException turidagi istisno yuz bergan, ya’ni nolga bo‘lish qo‘llanmoqda. View Details punkti yordamida chiqarish to‘g‘risidagi batafsil ma’lumotlarni ko‘rib chiqish mumkin.

Bunday holda bizga qoladigan yagona holat – dasturni bajarishni yakunlashdan iborat.

Dasturning bunday favqulodda yakunlanishiga yo‘l qo‘ymaslik uchun try... catch... finally konstruktsiyasidan foydalanish kerak. Shuningdek, misolni quyidagi tarzda o‘zgartirib o‘tamiz:

class Program

{

    static void Main(string[] args)



    {

        try

        {

            int x = 5;

            int y = x / 0;

            Console.WriteLine($"Natija: {y}");

        }

        catch

        {

            Console.WriteLine("Istisno halat!");

        }

        finally

        {

            Console.WriteLine("finally blogi");

        }

        Console.WriteLine("Dastur oxiri");

        Console.Read();

    }


}

Mazkur holatda yanada try blokida istisno yuz berdi, chunki biz nolga bo‘lishga harakat qilmoqdamiz.

int y = x / 0;

Dasturni amalga oshirish to‘xtatiladi. CLR catch blokini topib, boshqaruvni ushbu blokga topshiradi.

catch blokidan keyin finally bloki bajariladi.

Shu tariqa, dastur nolga bo‘lishni bajarmaydi va tegishli ravishda ushbu bo‘lish natijasini chiqarmaydi, lekin endilikda uning holati avariya yo‘li bilan yakunlanmaydi, istisno catch blokida ishlanadi.

Ta’kidlash joizki, ushbu konstruktsiyada try bloki majburiy. Catch bloki mavjud bo‘lganda, biz finally blokini tashlab qo‘yishimiz mumkin:

try


        {

            int x = 5;

            int y = x / 0;

            Console.WriteLine($"Natija: {y}");

        }

        catch

        {

            Console.WriteLine("Istisno halat!");

        }

Bundan tashqari, finally bloki mavjud bo‘lganda catch blokini tushirib, istisnoni qayta ishlab chiqmaslik mumkin:

try

        {



            int x = 5;

            int y = x / 0;

            Console.WriteLine($"Natija: {y}");

        }

        finally

        {

            Console.WriteLine("finally blogi");

        }

Biroq, C # sintaksisi nuqtai nazaridan bunday konstruktsiya to‘g‘ridan-to‘g‘ri bo‘lgan bo‘lsa-da, shuningdek, CLR zarur catch blokini topib bo‘lmagani uchun istisno qayta ishlanmaydi va dastur avariya yakunlanadi.

Istisnolarni qayta ishlash va shartli konstruktsiyalar

Bir qator istisno vaziyatlar ishlab chiqaruvchi tomonidan ko‘zda tutilishi mumkin Masalan, dastur sonni kiritish va uning kvadramini chiqish:

static void Main(string[] args)

{

    Console.WriteLine("Sonni kiriting");



    int x;

    string input = Console.ReadLine();

    if (Int32.TryParse(input, out x))

    {


        x *= x;

        Console.WriteLine("Sonning kvadrati: " + x);

    }

    else


    {

        Console.WriteLine("korrekt bo’lmagan kiritish");

    }

    Console.Read();



}

Aylantirishni amalga oshirish mumkin bo‘lsa, Int32.TryParse () usuli true va false - mumkin bo‘lmasa, qaytaradi. Aylantirish mumkin bo‘lganda, x o‘zgaruvchisi kiritilgan sonni o‘z ichiga oladi. Jumladan, try... catch ’ dan foydalanmasdan, mumkin bo‘lgan foydalanilmagan vaziyatni qayta ishlash mumkin.



Unumdorlik nuqtai nazaridan try.. catch bloklaridan foydalanish shartli konstruktsiyalardan foydalanishga nisbatan yo‘nalishli. Shuning uchun zarur holatlarni tekshirish uchun shartli konstruktsiyalardan foydalanish mumkin.
Download 106,86 Kb.

Do'stlaringiz bilan baham:




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish