Menu
CoddyTech

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.

challenge icon

Défi

Facile

Lorsqu’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.

  1. Dans notes.js, modifie la branche finale else, celle qui affiche Unknown command:. Les erreurs vont dans stderr : affiche-les donc avec console.error au lieu de console.log.
  2. Lorsqu’une commande a été saisie mais qu’elle est inconnue, affiche ces deux lignes dans stderr, dans cet ordre :
    Unknown command: remove
    Usage: node notes.js <command> [words]
    La première ligne indique le mot qui a été saisi : ici remove, dans node 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.
  3. Lorsque rien n’a été saisi après node notes.js, affiche uniquement la ligne d’utilisation dans stderr. N’affiche pas Unknown command: undefined.
  4. Dans les deux cas, termine le programme avec le code de sortie 1, ce qui signifie « échec ».
  5. add et list fonctionnent comme avant. node notes.js add Buy milk affiche toujours Adding: Buy milk et 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}`);
}
quiz iconTestez-vous

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

Entraînez-vous par vous-même : Playground Express