Bajardi: Elmurodov Shamshod Jahongir o’g’li


Download 142.73 Kb.
bet15/17
Sana19.06.2023
Hajmi142.73 Kb.
#1605144
1   ...   9   10   11   12   13   14   15   16   17
Bog'liq
Dasturlash asoslati 2-semestr

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:
C++ tryiboralarni ishlatadi throwva istisnolardan foydalanishni amalga oshiradi catch. Birinchidantryistisnoga olib kelishi mumkin bo'lgan bir yoki bir nechta bayonotni qo'shish uchun blokdan foydalaning. Ifoda blokda istisno holati (ko'pincha xatolik) sodir bo'lganligini bildiradi throw. Har qanday turdagi ob'ekt ifoda tryoperandi sifatida ishlatilishi mumkin. throwOdatda bu ob'ekt xato ma'lumotlarini uzatish uchun ishlatiladi. std::exceptionAksariyat hollarda standart kutubxonada belgilangan sinf yoki hosila sinflardan birini ishlatish tavsiya etiladi . Agar ulardan biri mos kelmasa, dan o'z istisno sinfini yaratish tavsiya etiladi std::exception.
Ro'y berishi mumkin bo'lgan istisnolarni hal qilish uchun blokdan catchkeyin darhol bir yoki bir nechta bloklarni amalga oshiring. tryHar bir catchblok o'zi boshqarishi mumkin bo'lgan istisno turini belgilaydi. Try Ushbu misolda blok va uning ishlov beruvchilari ko'rsatilgan . Tasavvur qiling, GetNetworkResource()tarmoq ulanishi orqali ma'lumotlarni oladi va 2 ta istisno turi - dan olingan foydalanuvchi tomonidan belgilangan sinflar std::exception. Const Esda tutingki, istisnolar havola orqali olinadi catch. Qiymat bo'yicha istisnolarni yaratish va ularni doimiy havola bilan qo'lga kiritish tavsiya etiladi.
Misol
C++Nusxalash
MyData md;
try {
// Code that could throw an exception
md = GetNetworkResource();
}
catch (const networkIOException& e) {
// Code that executes when an exception of type
// networkIOException is thrown in the try block
// ...
// Log error message in the exception object
cerr << e.what();
}
catch (const myDataFormatException& e) {
// Code that handles another exception type
// ...
cerr << e.what();
}


// The following syntax shows a throw expression
MyData GetNetworkResource()
{
// ...
if (IOSuccess == false)
throw networkIOException("Unable to connect");
// ...
if (readError)
throw myDataFormatException("Format error");
// ...
}



Download 142.73 Kb.

Do'stlaringiz bilan baham:
1   ...   9   10   11   12   13   14   15   16   17




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