Menu
CoddyTech

Gérer les erreurs

Fait partie de la section Les bases de Node.js du Journey Node.js de Coddy. Leçon 13 sur 24.

Un fichier notes.json modifié à la main peut être corrompu, et alors JSON.parse déclenche une erreur et Node affiche une trace de la pile d’appels.

try exécute du code susceptible de déclencher une erreur. Dans ce cas, catch reçoit l’erreur et votre programme décide quoi afficher. err.message indique la raison en une ligne.

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

Ne capturez pas l’erreur pour continuer avec une liste vide : le prochain add écraserait le fichier endommagé, et toutes les notes qu’il contient seraient perdues.

challenge icon

Défi

Facile
  • Lorsque notes.json n’est pas un JSON valide, chaque commande affiche notes.json is damaged: <message> sur stderr et se termine avec le code 1.
  • Le fichier notes.json fourni est volontairement endommagé.

Exécute node notes.js list avant et après ta modification. Supprime ensuite la virgule superflue dans notes.json et exécute à nouveau list.

Essayez vous-même

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;

Toutes les leçons de Les bases de Node.js