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.
Desafio
FácilQuando 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.
- Em
notes.js, altere o ramoelsefinal, aquele que imprimeUnknown command:. Os erros vão para stderr, então imprima-os comconsole.errorem vez deconsole.log. - Quando um comando foi digitado, mas é desconhecido, imprima estas duas linhas em stderr, nesta ordem:A primeira linha identifica a palavra que foi digitada: aqui,
Unknown command: remove Usage: node notes.js <command> [words]remove, denode 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. - Quando nada for digitado depois de
node notes.js, imprima apenas a linha de uso em stderr. Não imprimaUnknown command: undefined. - Em ambos os casos, encerre o programa com o código de saída 1, que significa "falhou".
addelistfuncionam como antes.node notes.js add Buy milkainda imprimeAdding: Buy milke 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}`);
}
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
1Executando JavaScript no Node
Olá, NodeLendo o comandoArgumentos da linha de comandoComandosPratique por conta própria: Playground de Express