Обработка исключительных ситуаций
Обработка исключений это мощный инструмент написания безопасного кода.
В настоящее время является популярным программирование с использований обработки исключений. В большинстве случаев подобный подход не оправдан, потому что написанный код не должен иметь исключительных ситуаций вообще. Однако есть ряд ситуаций, которые требуют использование данного механизма, а именно, когда предполагаются альтернативные потоки выполнения программы, связанные с ошибками. Поэтому обработка исключений используется в случаях, когда код может иметь множество ветвей выполнения, а также в написании тестов.
Рассмотрим код, приведенный листинге exception_example.cpp.
Он представляет собой безопасное деление целых чисел. В связи с тем, что переменные не инициализированы, делитель может равняться 0, что вызовет аварийное завершение программы.
Код, который может вызывать аварийное завершение приложения, помещается в блок try. В случае возникновения ошибки выполняется код в блоке catch. Переменная в круглых скобках блока catch содержит информацию об ошибке. Для каждого типа ошибки может быть объявлен свой блок catch. Стандартная библиотека С++ предлагает ряд типов исключений, которые объявлены в заголовочном файле exception. В частности, базовым классом для все исключений является std::exception.
Проверку деления на ноль в данном случае можно выполнить менее кардинальным способом (division_zero.cpp).
Однако, в случае более сложного кода подобным образом обрабатывать исключительную ситуацию уже невозможно, например, когда деление представлено в отдельной функции.
Last updated