|
1. Dasturlash tillarida sinflar Do’stona funksiyalarIstisno holatlar va sinflar
|
səhifə | 6/6 | tarix | 25.12.2023 | ölçüsü | 78,76 Kb. | | #161288 |
| 2-ma\'ruzaIstisno 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:
Ob’ektni xatolik bilan qaytarish toki foydalanuvchi o‘zi tekshirib ko‘rsin.
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 savollari0>
Dostları ilə paylaş: |
|
|