68 lines
1.1 KiB
Markdown
68 lines
1.1 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.
|