v0.2.12
This commit is contained in:
67
examples/028-defer-et-nettoyage-examples.md
Normal file
67
examples/028-defer-et-nettoyage-examples.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user