Статья: Модуль для работы с ассоциативными массивами в C++ Builder
сlass TCustomException{}; // Наш тип данных
TCustomException NewEx; // Объекткласса (типа) TCustomException
try // Начало блока создания исключений
{
throw NewEx; //Создание исключения
}
catch(TCustomException) // Начало блока отлова исключений
{
MessageDlg("Exception!!!",mtError, TMsgDlgButtons() << mbOK, 0); //Сообщение
};
Поскольку классы являются типами данных, мы без труда создаем свой TCustomException. Однако, неудобно создавать под каждое новое исключение – новый класс. Так что лучше создать объект класса TCustomException, что мы и делаем. Создаем объект NewEx, и используем его для создания исключения, которое потом с успехом отлавливается. В остальном конструкция работает так же, как вышеописанная, с той разницей, что она работает!
Однако, подобная конструкция тоже имеет проблемы. В случае более-менее сложной ситуации, нам придется выстраивать целые иерархии исключений. Чтобы этого не допускать, лучше пользоваться исключениями с параметрами.
Пример №3
//Класс для исключений с параметрами.
//Не забывать регистрировать его в опциях дебаггера!
class TEx
{
public:
int fCode;
TEx(int eCode){fCode=eCode;};
};
// Код, встроенный в клавишу Button1
try
{
throw TEx(1301);
}
catch(TEx Ex)
{
if(Ex.fCode==1301){