D LanguageScope guards


Syntax

  • scope(exit) - statements are called no matter how the current block was exited
  • scope(success) - statements are called when the current block was exited normally
  • scope(failure) - statements are called when the current block was exited through exception throwing

Remarks

Using scope guards makes code much cleaner and allows to place resource allocation and clean up code next to each other. These little helpers also improve safety because they make sure certain cleanup code is always called independent of which paths are actually taken at runtime.

The D scope feature effectively replaces the RAII idiom used in C++ which often leads to special scope guards objects for special resources.

Scope guards are called in the reverse order they are defined.

Play with scope guards or see an extensive tutorial.