Статья: Модуль для работы с ассоциативными массивами в 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){

К-во Просмотров: 227
Бесплатно скачать Статья: Модуль для работы с ассоциативными массивами в C++ Builder