102
{ public:
file_open_error(char *filename) { strcpy(file_open_error::filename, filename); }
char filename[255] ; };
12.6. Istisno xolatlar va sinflar
Sinf yaratishda shu sinfga tegishli istisno xolatlarni aniqlash mumkin. Aniq
sinfga tegishli istisno xolatni yaratish uchun ushbu istisno
xolatni 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 xolatni tasvirlovchi
obyektga nom berish kerak:
void f(Vector& v)
103
{
// ...
try {
do_something(v);
}
catch (Vector::Range r ) {
cerr << "mumkin bo‘lmagan indeks" << r.index << '\n';
// ...
}
// ...
Do'stlaringiz bilan baham: