Листинг класса пользовательских ошибок:
#include
<iostream.h>
//Класс
пользовательских ошибок
class
myExceptions
{
public:
//Класс
ошибки распределения памяти
class
xMemoryAllocationError
{
public:
void
Print()
{
cout
<<"!!!--->Error: Memory Allocation!<---!!!\n";
}
};
//Класс
ошибки открытия файла для чтения
class
xNotOpenedForReading
{
public:
void
Print()
{
cout
<<"!!!--->Cannot open a file for reading!<---!!!\n";
}
};
//Класс
ошибки открытия файла для записи
class
xNotOpenedForWriting
{
public:
void
Print()
{
cout
<<"!!!--->Cannot open a file for writing!<---!!!\n";
}
};
//Класс
ошибки
ввода
числа
class
xNotANumber
{
public:
void
Print()
{
cout
<<"!!!--->Is not a number!<---!!!\n";
}
};
//Класс
ошибки чтения данных из файла (прочтенное
имеет не подходящий формат)
class
xNotAnAnimal
{
public:
void
Print()
{
cout
<<"!!!--->Is not an animal! ERROR of reading
file!<---!!!\n";
}
};
//Класс
ошибки выхода за границы массива
class
xOutOfRange
{
public:
void
Print()
{
cout
<<"!!!--->Index of Array is Out Of Range!<---!!!\n";
}
};
};
//Класс
проверочный - содержит методы для
проверки условия
class
cheker
{
public:
//Вспомогательная
функция, осуществляет проверку
правильности ввода пользователем целого
числа
static
void isIntegerNumber(char* _Buf)
{
char*
Buf = _Buf;
while(*Buf)
{
if(!(((*Buf)
>= '0' && (*Buf) <= '9') || (*Buf) == '-'))
throw
myExceptions::xNotANumber();
Buf++;
}
}
//Вспомогательная
функция, осуществляет проверку
правильности ввода пользователем
вещественного числа
static
void isDoubleNumber(char* _Buf)
{
char*
Buf = _Buf;
while(*Buf)
{
if(!(((*Buf)
>= '0' && (*Buf) <= '9') || (*Buf) == '-'||(*Buf) ==
'.'))
throw
myExceptions::xNotANumber();
Buf++;
}
}
};
Диаграмма классов:

24