Кент Рейсдорф. BORLAND C++BUILDER. Раздел 4

Кент Рейсдорф. BORLAND C++BUILDER. Страница 408

Листинг 14.2. Пример обработки исключений

В этом коде вы видите контролируемый блок и блок захвата. Блок try содержит код, для которого может быть сформировано исключение. Оператор try говорит компилятору: «Проверь работу этих операторов». Если код ра­ботает нормально, блок catch игнорируется и выполнение программы про­должается. Если какой-либо из операторов внутри контролируемого блока формирует исключение, код блока catch будет выполнен. Блок catch должен следовать непосредственно после контролируемого блока (между ними не должно быть никакого другого кода).

Важно понимать, что как только исключение сформировано, управление немедленно передается блоку catch. В этом примере формирование исклю­чения наиболее вероятно для кода в строке 3. Если исключение сформировано в строке 3, программа перейдет к строке 12. В этом случае строки 4-8 никогда не будут выполнены.

Формирование исключений

Итак, оператор catch захватывает исключение, которое было сформиро­вано в каком-либо месте программы. В большинстве случаев это будет ис­ключение, посланное VCL.

Исключение формируется с помощью ключевого слова throw и имеет определенный тип. Например, типичный оператор throw может выглядеть следующим образом:

if (badParameter) throw("A bad parameter was passed");

Оператор throw формирует объект того же типа, который передан ему как параметр. В данном случае посылается char*, но может быть сформирован объект любого другого типа. Предположим, что для конкретной ошибки у вас есть код 111. В этом случае вы можете написать следующий оператор throw:

if (badParameter) throw(lll);

Данный оператор формирует целое число. Компилятор делает копию сформированного объекта и передает ее оператору catch, следующему сразу после контролируемого блока (мы вернемся к этому чуть позже).

Web-дизайн (с) 2010 All rights reserved