5. Обработка исключительных ситуаций

найден, то управление сразу передается на него — все остальные операторы в блоке try пропускаются.

Если же никаких исключительных ситуаций в контролируемом с помощью оператора try блоке не появилось, то блок обработки этих ситуаций, записанный следом за оператором catch, не выполняется. Он предназначен только для реагирования на ошибки. Управление при этом передается на первый оператор, следующий за catch-блоком.

Обрабатываем несколько исключительных ситуаций

— А можно ли с помощью собственного обработчика отловить попытку ввода слишком больших чисел?

— Да, можно. Си++ позволяет применять несколько catch-блоков, каждый из которых определяет способ обработки своей конкретной ситуации. Вслед за уже имеющимся catch-блоком можно добавить еще один (число таких перехватчиков неограничено), только вместо названия класса EConvertError необходимо указать другой класс — например, EOverflow (контроль за использованием слишком больших чисел с плавающей запятой), и показывать сообщение с другим текстом. Весь код будет выглядеть так:

try

{

Roubles->Text = FloatToStrF(

floor( SfcrToFloat( Dollars->Text ) * StrToFloat( Rate->Text ) + 0.5 ), ffFixed, 10, 2 ) ;

} catch (const EConvertError &)

{

ShowMessage("В одно из полей введены нечисловые данные") ;

} catch (const EOverflow &)

v

{

ShowMessage("В одно из полей введено слишком большое число");

}

102