Gardes de portée

Les gardes de portée permettent d'exécuter des instructions dans certaines conditions lorsqu'on sort de la portée courante:

  • scope(exit) exécutera les instructions à chaque sortie de portée
  • scope(success) les instructions seront exécutées lorsqu'aucune exception n'aura été lancée
  • scope(failure) les instructions seront exécutées lorsqu'une exception aura été lancée avant la sortie de la portée

Utiliser les gardes de portée rend le code bien plus propre et permet de placer l'allocation des ressources et leur libération l'un à côté de l'autre. Ils améliorent également la sûreté du programme, puisqu'ils s'assurent que le code de libération des ressources est toujours appelé, indépendament de l'exécution du code.

La fonctionnalité de scope du D remplacement l'idiome RAII, souvent utilisé en C++ et qui ammène souvent à des objets complexes pour la gestion des ressources mémoires.

Pour aller plus loin

rdmd playground.d