Стражи области видимости позволяют исполнять выражения во время выхода из текущего блока, при определённых условиях:
scope(exit)
всегда вызывается
scope(success)
вызывается при отсутствии исключений
scope(failure)
вызывается, если до выхода из блока
выбрасывается исключение
Использование стражей области видимости делает код более явным, и позволяет поместить занятие и освобождение ресурсов непосредственно рядом друг с другом. Эти маленькие помощники так же усиливают безопасность, позволяя удостовериться, что определённый код всегда будет выполнен, вне зависимости от ветки исполнения.
В D scope
фактически заменяет идиому RAII, применяемую
в C++ и часто используемую при реализации специальных
стражей для определённых типов ресурсов.
Стражи области видимости вызываются в порядке, обратном их определению.