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.
Aufgabe
Einfach- Wenn
notes.jsonkein gültiges JSON ist, gibt jeder Befehlnotes.json is damaged: <message>auf stderr aus und wird mit1beendet. - Die
notes.jsonder 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
1JavaScript mit Node ausführen
Hallo, NodeKommandozeilenargumenteBefehle