9.4.2 Предостережения Не все программы должны быть устойчивы ко всем видам ошибок. Не все ресурсы являются настолько
критичными, чтобы оправдать попытки защитить их с помощью описанного способа "запроса ресурсов
путем инициализации". Есть множество программ, которые просто читают входные данные и
выполняются до конца. Для них самой подходящей реакцией на динамическую ошибку будет просто
прекращение счета (после выдачи соответствующего сообщения). Освобождение всех затребованных
ресурсов возлагается на систему, а пользователь должен произвести повторный запуск программы с
более подходящими входными данными. Наша схема предназначена для задач, в которых такая
примитивная реакция на динамическую ошибку неприемлема. Например, разработчик библиотеки
обычно не в праве делать допущения о том, насколько устойчива к ошибкам, должна быть программа,
работающая с библиотекой. Поэтому он должен учитывать все динамические ошибки и освобождать
все ресурсы до возврата из библиотечной функции в пользовательскую программу. Метод "запроса
ресурсов путем инициализации" в совокупности с особыми ситуациями, сигнализирующими об ошибке,
может пригодиться при создании многих библиотек.
9.4.3 Исчерпание ресурса Есть одна из вечных проблем программирования: что делать, если не удалось удовлетворить запрос на
ресурс? Например, в предыдущем примере мы спокойно открывали с помощью fopen() файлы и
запрашивали с помощью операции new блок свободной памяти, не задумываясь при этом, что такого
файла может не быть, а свободная память может исчерпаться. Для решения такого рода проблем у
программистов есть два способа:
1. Повторный запрос: пользователь должен изменить свой запрос и повторить его.
2. Завершение: запросить дополнительные ресурсы от системы, если их нет, запустить особую
ситуацию.
Первый способ предполагает для задания приемлемого запроса содействие пользователя, во втором
пользователь должен быть готов правильно отреагировать на отказ в выделении ресурсов. В
большинстве случаев последний способ намного проще и позволяет поддерживать в системе