Menu
CoddyTech

Fehler behandeln

Teil des Abschnitts Node.js-Grundlagen der Node.js-Journey von Coddy. Lektion 13 von 24.

Eine von Hand bearbeitete notes.json kann beschädigt werden, und dann löst JSON.parse einen Fehler aus und Node gibt einen Stacktrace aus.

try führt Code aus, der einen Fehler auslösen kann. Wenn das passiert, erhält catch den Fehler, und dein Programm entscheidet, was es ausgibt. err.message enthält die Begründung in einer Zeile.

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

Fange den Fehler nicht ab, um mit einer leeren Liste weiterzumachen: Der nächste Aufruf von add würde die beschädigte Datei überschreiben, und alle darin enthaltenen Notizen wären verloren.

challenge icon

Aufgabe

Einfach
  • Wenn notes.json kein gültiges JSON ist, gibt jeder Befehl notes.json is damaged: <message> auf stderr aus und wird mit 1 beendet.
  • Die notes.json der Startversion ist absichtlich beschädigt.

Führe node notes.js list vor und nach deiner Änderung aus. Lösche dann das zusätzliche Komma in notes.json und führe list erneut aus.

Probier es selbst

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;

Alle Lektionen in Node.js-Grundlagen