1. Dasturlash tillarida sinflar Do’stona funksiyalar


Istisnolarni generatsiya qilish



Yüklə 78,76 Kb.
səhifə5/6
tarix25.12.2023
ölçüsü78,76 Kb.
#161288
1   2   3   4   5   6
2-ma\'ruza

Istisnolarni generatsiya qilish. C++ o‘zi istisno holatlarni yuzaga keltirmaydi. Ularni C++ ning throw operatoridan foydalangan dasturlar yuzaga keltiradi. Istisno yuzaga kelganda, throw operatoridagi nom berish ifodasi muvaqqat ob’ektni nomlaydi (initsiallashtiradi), Bunda muvaqqat ob’ektning turi ifoda argumenti (dalili) ning turiga mos keladi. Ushbu ob’ektning boshqa nusxalari, masalan, istisno ob’ektidan nusxa ko‘chirish konstruktori yordamida generatsiya qilinishi mumkin.
Masalan fayl ochilishida dastur xato kelib chiqish shartlarini tekshirish va throw file_open_error() istisno holatni yuzaga keltirish mumkin.
Kutilmagan istisnolarni qayta ishlash. Agar dasturda kuzda tutilmagan istisno hodisa yuz bersa standart istisnolarni qayta ishlovchi ishlatiladi. Ko’p hollarda bu standart qayta ishlovchi dastur bajarilishini to’xtatib qo’yadi. Avval unexpected() funksiyasi chaqirilib, undan so‘ng ko‘zda tutilgan bo‘yicha terminate() funksiyasi ishga tushadi. Bu funksiya dasturni to‘xtatish uchun abort() funksiyasini chaqiradi. Dasturda maxsus qayta ishlovchidan foydalanish uchun set_unexpected va set_terminate funksiyasidan foydjalanish lozim. Bu funksiyalar prototiplari except.h sarlavhali faylda aniqlangan. Bu funksiyalar void tipiga ega bo‘lib parametrsiz bo’ladi.
Istisno holatning ma’lumotlar elementlaridan foydalanish. Yuqorida ko‘rib o‘tilgan misollarda dastur, catch operatordan foydalanib, qanday istisno holat ro‘y berganini va ularga tegishli holda javob berishini imkonini beradi. Masalan, file_open_error istisno holatda dastur xatoni chaqiruvchi fayl nomini bilish lozim. Istisno holatga tegishli shunday ma’lumotni saqlash uchun dastur istisno holat sinfiga ma’lumotlar elementlarini qo‘shish. Agar keyinchalik dastur istisno holatni yuzaga keltirsa, u ushbu ma’lumotni, quyida ko‘rsatilgandek, istisno holatiga ishlov beruvchi funksiyaga o‘zgaruvchi sifatida uzatadi:
throw file_open_error(source);
throw file_read_error(344);
Istisno holatga ishlov berishda bu parametrlar sinfga tegishli o‘zgaruvchilarga o‘zlashtirilishi mumkin (konstruktorga o‘xshaydi). Masalan, sinfning tegishli o‘zgaruvchisiga xatoga yo‘l qo‘ygan faylni ismini o‘zlashtirish uchun quyidagi operatorlar file_open_error istisno holatni o‘zgartiradi:
class file_open_error
{
public:
file_open_error(char *filename) { strcpy(file_open_error::filename, filename); }
char filename[255] ;
};

Yüklə 78,76 Kb.

Dostları ilə paylaş:
1   2   3   4   5   6




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə