1. Dasturlash tillarida sinflar Do’stona funksiyalar


Istisno holatlar va sinflar



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

Istisno holatlar va sinflar. Sinf yaratishda shu sinfga tegishli istisno holatlarni aniqlash mumkin. Aniq sinfga tegishli istisno holatni yaratish uchun ushbu istisno holatni sinfning umumiy (public) elementlari sifatida kiritish zarur.
Masalan diapazon chegarasidan chiquvchi indeks qiymatini bilish zarur bo‘lsin:
class Vector {
// ...
public:
class Range {
public:
int index;
Range(int i) : index(i) { }
};
// ...
int& operator[](int i)
// ...
};
int Vector::operator[](int i)
{
if (o<=i && i
throw Range(i);
}
Mumkin bo‘lmagan indeks qiymatini bilish uchun istisno holatni tasvirlovchi ob’ektga nom berish kerak:
void f(Vector& v)
{
// ...
try {
do_something(v);
}
catch (Vector::Range r ) {
cerr << "mumkin bo‘lmagan indeks" << r.index << '\n';
// ...
}
// ...
}
Qavsdagi konstruktsiya tavsif bo‘lib funksiya formal parametriga mosdir. Unda parametr tipi va yuzag kelgn istisno nomi berilishi mumkin.
Istisnolar va konstruktorlar. Istisnolar konstruktordagi xatolar haqida ma’lumot berishga imkon beradi. Konstruktor chaqiruvchi funksiya tekshirib ko‘rishi mumkin bo‘lgan qiymat qaytarmagani uchun istisnolarsiz quyidagicha xatolik haqida ma’lumot berish mumkin:

  1. Ob’ektni xatolik bilan qaytarish toki foydalanuvchi o‘zi tekshirib ko‘rsin.

  2. Lokal bo‘lmagan o‘zgaruvchiga ob’ekt yaratilmagani xaqida ma’lumot beruvchi qiymat o‘rnatish.

Istisnolar ob’ekt yaratilmagani haqidagi ma’lumotni tashqariga uzatishga imkon beradi:
Vector::Vector(int size)
{
if (sz<0 || max
// ...
}
Vektor yaratilayotgan funksiyada noto‘g‘ri o‘lcham (Size()) xatoligini qayta ishlash mumkin:
Vector* f(int i)
{
Vector* p;
try {
p = new Vector v(i);
}
catch (Vector::Size) {
// vektor noto‘qri o‘lchami
}
// ...
return p;
}


Nazorat savollari
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ə