30 lines
982 B
Markdown
30 lines
982 B
Markdown
# 42. `main` et `ExitCode`
|
|
|
|
## 42.1 `main` — V1 REQUIS — FIGÉ
|
|
|
|
Dans `main.saselrun` :
|
|
|
|
```text
|
|
func main(Array<String> args) -> Result<ExitCode>
|
|
```
|
|
|
|
Pas de visibilité explicite.
|
|
|
|
`main` ne peut pas déclarer `throws`, même s'il retourne `Result`.
|
|
|
|
L'environnement top-level ne possède pas d'appelant Saselang capable d'assumer un contrat checked : toute `Exception` doit donc être gérée avant de quitter `main`.
|
|
|
|
`main` peut documenter des `Fault` par `faults`, comme toute callable. Un `Fault` non capturé atteint la frontière de l'unité d'exécution et provoque l'échec runtime correspondant.
|
|
|
|
## 42.2 `ExitCode` — V1 REQUIS — FIGÉ EN PRINCIPE
|
|
|
|
`ExitCode` est un type Core à sémantique portable.
|
|
|
|
Sa représentation ABI peut dépendre de la plateforme, mais sa signification Saselang reste stable.
|
|
|
|
Une erreur de `main` doit produire au minimum une représentation utilisateur raisonnable et un code d'échec.
|
|
|
|
Logging/tracing reste une API séparée.
|
|
|
|
---
|