Для возврата по try используется стек вызова процедур.



Мы поможем в написании ваших работ!


Мы поможем в написании ваших работ!



Мы поможем в написании ваших работ!


ЗНАЕТЕ ЛИ ВЫ?

Для возврата по try используется стек вызова процедур.



Программы, построенные с использованием механизма исключительных ситуаций, обязаны придерживаться строгих правил распределения и освобождения таких ресурсов, как память, файлы, ресурсы ОС.

 

Ресурсы нуждаются в защите от исключительных ситуаций. Для этого в среде Delphi предусмотрен еще один вариант защищенного блока:

 

// запрос ресурса

try

// защищаемые операторы, которые используют ресурс

finally

// освобождение ресурса

end;

 

Особенность этого блока состоит в том, что секция finally...end выполняется всегда независимо от того, происходит исключительная ситуация или нет. Если какой-либо оператор секции try...finally генерирует исключительную ситуацию, то сначала выполняется секция finally...end, называемая секцией завершения (освобождения ресурсов), а затем управление передается внешнему защищенному блоку. Если все защищаемые операторы выполняются без ошибок, то секция завершения тоже работает, но управление передается следующему за ней оператору. Обратите внимание, что секция finally...end не обрабатывает исключительную ситуацию, в ней нет ни средств ее обнаружения, ни средств доступа к объекту исключительной ситуации.

 

 

Блок try...finally...end обладает еще одной важной особенностью. Если он помещен в цикл, то вызов из защищенного блока процедуры Break с целью преждевременного выхода из цикла или процедуры Continue с целью перехода на следующую итерацию цикла сначала обеспечивает выполнение секции finally...end, а затем уже выполняется соответствующий переход. Это утверждение справедливо также и для процедуры Exit.

Как показывает практика, подпрограммы часто распределяют сразу несколько ресурсов и используют их вместе. В таких случаях применяются вложенные блоки try...finally...end:

 

// распределение первого ресурса

try

...

// распределение второго ресурса

try

// использование обоих ресурсов

finally

// освобождение второго ресурса

end;

...

finally

// освобождение первого ресурса

end;

Кроме того, вы успешно можете комбинировать блоки try...finally...end и try...except...end

для защиты ресурсов и обработки исключительных ситуаций.

Приемы надежного программирования

Стиль надежного программирования впитал в себя все идеи модульного и структурного стилей, в то же время акцентируя внимание на некоторых специфических аспектах.

Специфика надежного программирования состоит в выборе таких способов программирования, которые повышают надежность программы. В понятие "надежность" входят две составляющие – корректность и устойчивость.

Надежный стиль программирования обеспечивается применением способов надежного программирования. Эти способы представляют собой совокупность приемов программирования. Каждый из них состоит в применении определенных языковых средств и композиций в конкретных ситуациях, алгоритмах, схемах вычислений и представлениях структур данных.

1. Методы защиты от ошибок. Они позволяют создавать программы, работающие при наличии ошибок.

§ Ограничение последствий ошибки: программа строится так, чтобы ошибка не искажала ее работу вне того участка, где эта ошибка возникла.

§ Локализация ошибки: программа содержит процедуры для возобновления ее правильной работы после устранения ошибки.

§ Дуальное программирование: программа содержит избыточные ветви, позволяющие заменить хотя бы частично неверные ветви в момент возникновения ошибки.

2. Тестирование программ.

Надежная программа гарантирует правильность получаемых результатов и безотказность программы. Программа должна быть такова, что ее исполнение на каждом из допустимых наборов исходных данных приводит к ожидаемым результатам ее выполнения, не должно возникать непредвиденных ситуаций, например переполнения, нехватки памяти, зацикливаний и т.д.

При создании программы нужно не просто программировать вычисления, а представлять, как они будут выполняться с разными значениями операндов. Один из важнейших принципов надежного программирования – определение области допустимых значений данных на основе анализа и тестирования программы.

Программа, построенная с применением приемов надежного программирования, должна:

сообщать пользователю об области допустимых значений исходных данных при формулировке задачи или при вводе данных;

контролировать значения исходных данных при их вводе, сообщать о невозможности выполнения вычислений для недопустимых значений;

обеспечивать для каждой из подобластей допустимых значений соответствующие ей вычисления;

контролировать промежуточные результаты вычислений, прекращать вычисления или изменять их порядок при обнаружении недопустимых ситуаций.


 

Понятие интерфейса. Описание интерфейса. Поддержка интерфейса классом. Механизм подсчета ссылок в интерфейсах. Расширение интерфейса. Глобально-уникальный идентификатор интерфейса. Совместимость интерфейсов и классов. Получение интерфейса через другой интерфейс. Представление интерфейса в памяти. Механизм вызова метода объекта через интерфейс. Применение интерфейса для доступа к объекту динамически-подключаемой библиотеки.



Последнее изменение этой страницы: 2016-08-14; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.235.184.215 (0.02 с.)