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