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



Pdf көрінісі
бет175/256
Дата11.07.2022
өлшемі2,87 Mb.
#37591
1   ...   171   172   173   174   175   176   177   178   ...   256
Байланысты:
Бьерн Страуструп. Язык программирования С . М Бином, 2011

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

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




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

    Басты бет