Бьерн Страуструп. Язык программирования С++ Второе дополненное издание



Pdf көрінісі
бет175/256
Дата11.07.2022
өлшемі2,87 Mb.
#37591
1   ...   171   172   173   174   175   176   177   178   ...   256
9.4.2 Предостережения 
Не все программы должны быть устойчивы ко всем видам ошибок. Не все ресурсы являются настолько 
критичными, чтобы оправдать попытки защитить их с помощью описанного способа "запроса ресурсов 
путем инициализации". Есть множество программ, которые просто читают входные данные и 
выполняются до конца. Для них самой подходящей реакцией на динамическую ошибку будет просто 
прекращение счета (после выдачи соответствующего сообщения). Освобождение всех затребованных 
ресурсов возлагается на систему, а пользователь должен произвести повторный запуск программы с 
более подходящими входными данными. Наша схема предназначена для задач, в которых такая 
примитивная реакция на динамическую ошибку неприемлема. Например, разработчик библиотеки 
обычно не в праве делать допущения о том, насколько устойчива к ошибкам, должна быть программа, 
работающая с библиотекой. Поэтому он должен учитывать все динамические ошибки и освобождать 
все ресурсы до возврата из библиотечной функции в пользовательскую программу. Метод "запроса 
ресурсов путем инициализации" в совокупности с особыми ситуациями, сигнализирующими об ошибке, 
может пригодиться при создании многих библиотек. 
9.4.3 Исчерпание ресурса 
Есть одна из вечных проблем программирования: что делать, если не удалось удовлетворить запрос на 
ресурс? Например, в предыдущем примере мы спокойно открывали с помощью fopen() файлы и 
запрашивали с помощью операции new блок свободной памяти, не задумываясь при этом, что такого 
файла может не быть, а свободная память может исчерпаться. Для решения такого рода проблем у 
программистов есть два способа: 
1. Повторный запрос: пользователь должен изменить свой запрос и повторить его. 
2. Завершение: запросить дополнительные ресурсы от системы, если их нет, запустить особую 
ситуацию. 
Первый способ предполагает для задания приемлемого запроса содействие пользователя, во втором 
пользователь должен быть готов правильно отреагировать на отказ в выделении ресурсов. В 
большинстве случаев последний способ намного проще и позволяет поддерживать в системе 

Достарыңызбен бөлісу:
1   ...   171   172   173   174   175   176   177   178   ...   256




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет