Menu
CoddyTech

Erros e códigos de saída

Parte da seção Fundamentos de Node.js do Journey de Node.js da Coddy. Lição 5 de 33.

Quando um comando falha, a pessoa no terminal precisa ver o motivo, e qualquer programa que executou o seu precisa saber que ele falhou.

Um programa tem dois fluxos de saída: stdout para resultados e stderr para erros, escritos com console.error. Quando termina, ele devolve um código de saída: 0 significa que funcionou; qualquer outro valor significa que falhou. process.exit(1) interrompe o programa imediatamente com o código 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);

O terminal ao lado do seu código mostra stderr em vermelho e exibe o código de saída quando ele não é 0.

challenge icon

Desafio

Fácil

Quando alguém usa sua ferramenta de forma incorreta, ela deve explicar como usá-la e informar ao terminal que houve uma falha. Os programas fazem isso usando o fluxo de erros, stderr, e um código de saída.

  1. Em notes.js, altere o ramo else final, aquele que imprime Unknown command:. Os erros vão para stderr, então imprima-os com console.error em vez de console.log.
  2. Quando um comando foi digitado, mas é desconhecido, imprima estas duas linhas em stderr, nesta ordem:
    Unknown command: remove
    Usage: node notes.js <command> [words]
    A primeira linha identifica a palavra que foi digitada: aqui, remove, de node notes.js remove 3. A segunda linha é sempre a mesma. Copie-a exatamente, com <command> e [words] como estão escritos: eles fazem parte do texto, não são algo para preencher.
  3. Quando nada for digitado depois de node notes.js, imprima apenas a linha de uso em stderr. Não imprima Unknown command: undefined.
  4. Em ambos os casos, encerre o programa com o código de saída 1, que significa "falhou".
  5. add e list funcionam como antes. node notes.js add Buy milk ainda imprime Adding: Buy milk e termina com o código de saída 0.

Experimente: pressione Executar com a caixa depois de $ node notes.js vazia. Você verá a linha de uso em vermelho, e o terminal exibirá o código de saída 1. Em seguida, digite remove 3 e pressione Enter: você verá Unknown command: remove e a linha de uso, ambas em vermelho, e o código de saída 1. Depois, digite add Buy milk: você verá Adding: Buy milk na cor normal, sem código de saída, porque o terminal oculta o 0.

Experimente você mesmo

// Sua ferramenta de anotações começa aqui.
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 iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos de Node.js

Pratique por conta própria: Playground de Express