Управление проектами - статьи


Designing for FAILURE - ключ к успеху?Беседа с Брюсом Линдсеем - часть 6


Если не задумываться о возможности сбоев, то зачем помещать в блок диска адрес самого этого блока?

СБ: Значит, на самом деле Вы стараетесь убедиться в том, что понимаете то, что происходит в системе?

БЛ: По большому счету это именно так. И еще я стараюсь проверить то, что данные или состояние, над которыми требуется производить дальнейшую работу, являются самосогласованными.

СБ: Имеется ли какая-нибудь языковая поддержка обнаружения ошибок?

БЛ: По сути, языковая поддержка обнаружения ошибок отсутствует. В языках имеются средства обработки уже обнаруженных ошибок. Генерация исключительной ситуации средствами языка программирования – это нечто, что делается в соответствии с логикой программы.

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

В языках имеются некоторые довольно опасные возможности – в частности, инициирование ошибки (raise error) или исключительной ситуации, а также обработчики исключений. Как это соотносится со стеком вызовов процедур? В ранних подходах к языковой поддержке обработки ошибок стек сокращался без совершения каких-либо дополнительных действий, пока не достигался некоторый уровень, на котором было объявлено нечто, представляющее интерес для обработки данной исключительной ситуации, т.е. ошибки.

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

Поэтому очень важно дать каждому вызову процедуры возможность «аккуратно сложить свою палатку», даже если эти действия не имеют отношения к обрабатываемому исключению.




Начало  Назад  Вперед



Книжный магазин