スコープガードを使うことで、現在のブロックから脱出したときに一定の条件で文を実行できます:
scope(exit)
は常に文を呼び出します
scope(success)
文は例外が何も投げられなかった時に呼ばれます
scope(failure)
はブロックの終わりの前に例外が投げられた時に呼ばれる文を表します
スコープガードを使うことでコードはよりクリーンになり、 リソース割り当てとクリーンアップコードを並べて配置することができます。 これらのちょっとしたヘルパは実行時にどのようなパスを通ったかに関係なく クリーンアップコードが常に呼ばれることを確実にするため、安全性を改善することができます。
Dのscope
機能はC++で使われる、しばしば特殊なリソースのために特殊な
スコープガードオブジェクトを導入するRAIIイディオムを効率的に置き換えます。
スコープガードはそれらが定義されたのと逆順に呼ばれます。