スコープガード

スコープガードでカレントブロックから出た時に一定の条件で文を実行することができます:

  • scope(exit)は常に文を呼び出します
  • scope(success)文は例外が何も投げられなかった時に呼ばれます
  • scope(failure)はブロックの終わりの前に例外が投げられた時に呼ばれる文を表します

スコープガードを使ことでコードをとてもわかり易くし、 リソース割り当てとクリーンアップコードを並べて配置することができます。 これらのちょっとしたヘルパは実行時にどのようなパスを通ったかに関係なく クリーンアップコードが常に呼ばれることを確実にするため、安全性を改善することができます。

Dのscope機能はC++で使われる、しばしば特殊なリソースのために特殊な スコープガードオブジェクトを導入するRAIIイディオムを効率的に置き換えます。

スコープガードはそれらが定義されたのと逆順に呼ばれます。

掘り下げる

rdmd playground.d