Menu
CoddyTech

Wenn ein Promise fehlschlägt

Teil des Abschnitts Node.js-Grundlagen der Node.js-Journey von Coddy. Lektion 20 von 33.

Ein Promise kann auch fehlschlagen, zum Beispiel wenn eine Datei nicht existiert. Das nennt man Ablehnung. .catch stellt den Code bereit, der bei einem Fehler ausgeführt werden soll. .finally wird nach einem Erfolg oder einem Fehler ausgeführt, was für eine abschließende Meldung nützlich ist.

readFile('weather.txt', 'utf8')
    .then((text) => console.log(text))
    .catch(() => console.log('No file'))
    .finally(() => console.log('Finished'));

Wenn das Lesen fehlschlägt, wird der Erfolgs-Callback übersprungen. Das Beispiel gibt „No file“ und dann „Finished“ aus. Die Fehlermeldung gehört in catch, damit sie bei einem erfolgreichen Lesevorgang nicht ausgegeben wird.

challenge icon

Aufgabe

Einfach

Führe zuerst practice.js aus: Die fehlende Datei verursacht einen nicht abgefangenen ENOENT-Fehler.

Behalte den Callback für erfolgreiches Lesen bei. Füge .catch hinzu, um bei einem Fehler No notes yet auszugeben, und anschließend .finally, um in beiden Fällen Done auszugeben. Ohne Argumente lauten die Zeilen No notes yet und Done. Probiere note.txt aus: Die Zeilen lauten Buy milk und Done.

Probier es selbst

import { readFile } from 'node:fs/promises';
readFile(process.argv[2] ?? 'missing.txt', 'utf8').then((text) => console.log(text));

Alle Lektionen in Node.js-Grundlagen

Übe selbstständig: Express-Playground