# 42. `main` et `ExitCode` ## 42.1 `main` — V1 REQUIS — FIGÉ Dans `main.saselrun` : ```text func main(Array args) -> Result ``` 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. ---