Erreurs et codes de sortie
Fait partie de la section Les bases de Node.js du Journey Node.js de Coddy. Leçon 5 sur 33.
Lorsqu’une commande échoue, la personne au terminal doit savoir pourquoi, et tout programme qui a exécuté le vôtre doit savoir qu’il a échoué.
Un programme possède deux flux de sortie : stdout pour les résultats et stderr pour les erreurs, écrites avec console.error. À la fin de son exécution, il renvoie un code de sortie : 0 signifie qu’il a fonctionné, toute autre valeur signifie qu’il a échoué. process.exit(1) arrête immédiatement le programme avec le code 1.
// node divide.js 6 0
const [a, b] = process.argv.slice(2).map(Number);
if (b === 0) {
console.error('Cannot divide by zero');
process.exit(1);
}
console.log(a / b);Le terminal à côté de votre code affiche stderr en rouge et indique le code de sortie lorsqu’il n’est pas égal à 0.
Défi
FacileLorsqu’une personne utilise mal ton outil, celui-ci doit lui indiquer comment l’utiliser et signaler au terminal que l’opération a échoué. Les programmes le font avec le flux d’erreur, stderr, et un code de sortie.
- Dans
notes.js, modifie la branche finaleelse, celle qui afficheUnknown command:. Les erreurs vont dans stderr : affiche-les donc avecconsole.errorau lieu deconsole.log. - Lorsqu’une commande a été saisie mais qu’elle est inconnue, affiche ces deux lignes dans stderr, dans cet ordre :La première ligne indique le mot qui a été saisi : ici
Unknown command: remove Usage: node notes.js <command> [words]remove, dansnode notes.js remove 3. La deuxième ligne est toujours la même. Recopie-la exactement, avec<command>et[words]tels quels : ils font partie du texte, ce ne sont pas des éléments à remplacer. - Lorsque rien n’a été saisi après
node notes.js, affiche uniquement la ligne d’utilisation dans stderr. N’affiche pasUnknown command: undefined. - Dans les deux cas, termine le programme avec le code de sortie 1, ce qui signifie « échec ».
addetlistfonctionnent comme avant.node notes.js add Buy milkaffiche toujoursAdding: Buy milket se termine avec le code de sortie 0.
Essaie : appuie sur Run en laissant vide la zone après $ node notes.js. La ligne d’utilisation s’affiche en rouge et le terminal indique le code de sortie 1. Saisis ensuite remove 3 et appuie sur Entrée : Unknown command: remove et la ligne d’utilisation s’affichent, toutes deux en rouge, et le code de sortie est 1. Saisis ensuite add Buy milk : Adding: Buy milk s’affiche dans la couleur habituelle, sans code de sortie, car le terminal masque le code 0.
Essayez vous-même
// Votre outil de prise de notes commence ici.
const [command, ...words] = process.argv.slice(2);
const text = words.join(' ');
if (command === 'add') {
console.log(`Adding: ${text}`);
} else if (command === 'list') {
console.log('No notes yet');
} else {
console.log(`Unknown command: ${command}`);
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Les bases de Node.js
1Exécuter JavaScript avec Node
Bonjour, NodeLire la commandeArguments de ligne de commandeCommandes5Événements, entrées et packages
Écouter avant d’émettreÉmetteurs d’événementsLire les entréesEntraînez-vous par vous-même : Playground Express