Files
saselang-bible/examples/028-defer-et-nettoyage-examples.md
2026-09-13 10:20:16 +02:00

79 lines
1.3 KiB
Markdown

# Exemples / DO-DON'T — Chapitre 28 — `defer` et nettoyage
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
## Exemples actuellement présents dans le chapitre
### Exemple 1
```text
{
acquireA();
defer {
releaseA();
}
acquireB();
defer {
releaseB();
}
work();
}
```
### Exemple 2
```text
releaseB();
releaseA();
```
### Exemple 3
```text
fin normale
return
throw
break
continue
emit quittant le scope concerné
```
### Exemple 4
```text
throw
-> unwind des scopes quittés
-> defer de ces scopes, LIFO
-> catch correspondant éventuel
-> defer du scope catch, LIFO
-> finally éventuel
-> continuation normale ou propagation
```
### Exemple 5
```text
return
throw
break
continue
emit
```
## DO / DON'T / WHY / compiler error / edge cases
La couverture structurée de cette section sera enrichie au fur et à mesure de la fermeture des règles du chapitre. La migration `0.2.12` conserve volontairement les exemples historiques dans le chapitre afin de ne perdre aucun contexte normatif.
## Fault et cleanup
```text
defer {
fault CleanupFault(...); // ERROR : fault explicite escaping
}
```
Un `Fault` dynamique produit indirectement reste possible car il est unchecked ; l'ordre exact d'unwind/destruction est encore à fermer.