5. Обработка исключительных ситуаций
Охота за ошибками
Ошибок типа деления на ноль теперь можно не бояться. Осталось только добавить проверку текстовых строк, вводимых в поля, дабы убедиться, что в них записаны именно числа, а не произвольный набор символов, который невозможно преобразовать в тип float. Проверить это можно разными способами, например использовав подходящую стандартную функцию. Однако на все случаи жизни стандартных функций не напасешься, да и программисты часто забывают или ленятся вставлять соответствующие проверки. Поэтому для отслеживания всевозможных непредвиденных и неприятных происшествий, а также для управления ими в Си++ существует очень мощный механизм обработки исключительных ситуаций. Он позволяет указать программе, что надо сделать, когда в ней возникает та или иная ошибка, например деление на ноль, неправильное приведение типов или попытка преобразовать набор букв в число.
Устанавливаем над программой контроль
Прежде всего необходимо определить, в каких операторах программы возможно возникновение исключительных ситуаций. В случае с калькулятором — это два оператора преобразования введенного в поля Roubles и Rate текста в числа с помощью функции StrToFloat(). Если в качестве ее параметра указать, например, десять, то возникнет исключительная ситуация с типом EConvertError.
»
Для каждой исключительной ситуации определен свой класс, который начинается с буквы Е (от английского Exception — Исключение), в C++Buuder4 насчитывается несколько десятков таких классов.
111111И111И1Ч1111 l'«i¦ ¦1'И IIIIIIUIIIIIIUIIIIIiMlll^ 1111 Ч ¦1'111¦1Г¦» Illl ¦ il III НИ Illlll I ill ll.llllll 1111 « ШГ 111¦111«11111111¦111111111111111¦1111И1111111¦111Ч1111¦И1111:1111»Ч1И1¦Ц11Ы1'Г¦11:т1Й^1И1>1*»И**"11Г111111»1111Г1»111И>«^* B> Ulllll' Illlillll I Illllllllllllllllllll Illlllllllllll ll III I. ^ i ll i III I I 111 ll I Illlll'l Hill IIIIHIII ¦1¦111 ^ I i¦ I ll I ill I III i nil I I i
98