Menu
CoddyTech

Errores y códigos de salida

Parte de la sección Conceptos básicos de Node.js del Journey de Node.js de Coddy. Lección 5 de 33.

Cuando falla un comando, la persona que está en la terminal necesita saber por qué, y cualquier programa que haya ejecutado el tuyo necesita saber que falló.

Un programa tiene dos flujos de salida: stdout para los resultados y stderr para los errores, que se escriben con console.error. Cuando termina, devuelve un código de salida: 0 significa que funcionó; cualquier otro valor significa que falló. process.exit(1) detiene el programa de inmediato con el 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);

La terminal junto a tu código muestra stderr en rojo e imprime el código de salida cuando no es 0.

challenge icon

Desafío

Fácil

Cuando alguien usa tu herramienta de forma incorrecta, debería indicar cómo usarla y decirle a la terminal que hubo un error. Los programas hacen esto mediante el flujo de errores, stderr, y un código de salida.

  1. En notes.js, cambia la rama else final, la que imprime Unknown command:. Los errores van a stderr, así que imprímelos con console.error en lugar de console.log.
  2. Cuando se haya escrito un comando, pero este sea desconocido, imprime estas dos líneas en stderr, en este orden:
    Unknown command: remove
    Usage: node notes.js <command> [words]
    La primera línea indica la palabra que se escribió: aquí, remove, de node notes.js remove 3. La segunda línea siempre es la misma. Cópiala exactamente, con <command> y [words] tal como están escritos: forman parte del texto, no son elementos que haya que completar.
  3. Cuando no se haya escrito nada después de node notes.js, imprime solo la línea de uso en stderr. No imprimas Unknown command: undefined.
  4. En ambos casos, termina el programa con el código de salida 1, que significa «falló».
  5. add y list funcionan como antes. node notes.js add Buy milk sigue imprimiendo Adding: Buy milk y termina con el código de salida 0.

Pruébalo: pulsa Ejecutar con el cuadro después de $ node notes.js vacío. Verás la línea de uso en rojo y la terminal mostrará el código de salida 1. Luego escribe remove 3 y pulsa Intro: verás Unknown command: remove y la línea de uso, ambas en rojo, y el código de salida 1. Luego escribe add Buy milk: verás Adding: Buy milk en el color normal y no aparecerá ningún código de salida, porque la terminal oculta el 0.

Pruébalo tú mismo

// Tu herramienta de notas comienza aquí.
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 iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Conceptos básicos de Node.js

Practica por tu cuenta: Playground de Express