Menu
CoddyTech

Manejo de errores

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

Un archivo notes.json editado a mano puede dañarse y, después, JSON.parse lanza una excepción y Node imprime un seguimiento de la pila.

try ejecuta código que puede lanzar una excepción. Cuando lo hace, catch recibe el error y tu programa decide qué decir. err.message es el motivo en una sola línea.

let config;
try {
    config = JSON.parse('{ port: 3000 }');
} catch (err) {
    console.error(`config is broken: ${err.message}`);
    process.exit(1);
}

No captures el error para luego continuar con una lista vacía: el siguiente add sobrescribiría el archivo dañado y se perderían todas las notas que contiene.

challenge icon

Desafío

Fácil
  • Cuando notes.json no es un JSON válido, todos los comandos imprimen notes.json is damaged: <message> en stderr y terminan con 1.
  • El archivo notes.json inicial está dañado a propósito.

Ejecuta node notes.js list antes y después de tu cambio. Después, elimina la coma adicional en notes.json y vuelve a ejecutar list.

Pruébalo tú mismo

import { existsSync, readFileSync, writeFileSync } from 'node:fs';

const file = 'notes.json';

const store = {
    notes: existsSync(file) ? JSON.parse(readFileSync(file, 'utf8')) : [],
    save() {
        writeFileSync(file, JSON.stringify(this.notes, null, 2));
    },
    add(text) {
        this.notes.push(text);
        this.save();
        return this.notes.length;
    },
    remove(n) {
        const [text] = this.notes.splice(n - 1, 1);
        this.save();
        return text;
    },
};

export default store;

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