Menu
CoddyTech

Obsługa błędów

Część sekcji Podstawy Node.js ścieżki Node.js w Coddy. Lekcja 13 z 24.

Ręcznie edytowany plik notes.json może ulec uszkodzeniu, a wtedy JSON.parse zgłasza wyjątek i Node wyświetla ślad stosu.

try uruchamia kod, który może zgłosić wyjątek. Gdy tak się stanie, catch otrzymuje błąd, a twój program decyduje, co powiedzieć. err.message zawiera zwięzły opis przyczyny.

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

Nie przechwytuj błędu i nie kontynuuj działania z pustą listą: następne add nadpisałoby uszkodzony plik i wszystkie zawarte w nim notatki zostałyby utracone.

challenge icon

Wyzwanie

Łatwy
  • Gdy notes.json nie jest prawidłowym plikiem JSON, każde polecenie wypisuje notes.json is damaged: <message> na standardowe wyjście błędów i kończy działanie z kodem 1.
  • Plik notes.json w wersji początkowej jest celowo uszkodzony.

Uruchom node notes.js list przed i po wprowadzeniu zmian. Następnie usuń dodatkowy przecinek z pliku notes.json i ponownie uruchom polecenie list.

Spróbuj swoich sił

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;

Wszystkie lekcje w sekcji Podstawy Node.js