Бьерн Страуструп.
Язык программирования С++
78
ошибках. Управление возвращается из error() потому, что ошибки,
как правило, встречаются посреди
вычисления выражения. Значит надо либо полностью
прекращать вычисления, либо возвращать
значение, которое не должно вызвать последующих ошибок. Для простого
калькулятора больше
подходит последнее. Если бы функция get_token() отслеживала номера строк, то функция error() могла
бы указывать пользователю приблизительное место ошибки. Это
было бы полезно при
неинтерактивной работе с калькулятором. Часто после появления
ошибки программа должна
завершиться, поскольку не удалось предложить разумный вариант ее дальнейшего выполнения.
Завершить ее можно с
помощью вызова функции exit(), которая заканчивает работу с выходными
потоками ($$10.5.1) и завершает программу, возвращая свой параметр в качестве ее результата. Более
радикальный
способ завершения программы - это вызов функции abort(), которая прерывает
выполнение программы немедленно или сразу же после сохранения информации для отладчика (сброс
оперативной памяти). Подробности вы можете найти в своем справочном руководстве.
Более тонкие приемы обработки ошибок можно предложить, если ориентироваться на особые ситуации
(см.$$9), но предложенное решение вполне приемлемо для игрушечного калькулятора в 200 строк.
Достарыңызбен бөлісу: