Menu
CoddyTech

Gestire gli errori

Fa parte della sezione Fondamenti di Node.js del percorso Node.js di Coddy. Lezione 13 di 24.

Un file notes.json modificato manualmente può danneggiarsi e, in tal caso, JSON.parse genera un errore e Node stampa una traccia dello stack.

try esegue codice che potrebbe generare un errore. Quando accade, catch riceve l'errore e il tuo programma decide cosa comunicare. err.message è il motivo espresso in una sola riga.

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

Non intercettare l'errore per poi proseguire con un elenco vuoto: la chiamata successiva a add sovrascriverebbe il file danneggiato e tutte le note al suo interno andrebbero perse.

challenge icon

Sfida

Facile
  • Quando notes.json non è un JSON valido, ogni comando stampa notes.json is damaged: <message> su stderr e termina con 1.
  • Il file notes.json iniziale è danneggiato intenzionalmente.

Esegui node notes.js list prima e dopo la modifica. Poi elimina la virgola in più in notes.json ed esegui di nuovo list.

Provalo tu

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;

Tutte le lezioni di Fondamenti di Node.js