Menu
CoddyTech

Обработка ошибок

Часть раздела Основы Node.js путешествия по Node.js на Coddy. Урок 13 из 24.

Файл notes.json, отредактированный вручную, может оказаться повреждённым, и тогда JSON.parse выдаст исключение, а Node напечатает трассировку стека.

try выполняет код, который может вызвать исключение. Если это происходит, catch получает ошибку, а ваша программа решает, что сообщить. err.message — это краткая причина в одну строку.

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

Не перехватывайте ошибку, продолжая работу с пустым списком: следующий вызов add сохранит данные поверх повреждённого файла, и все заметки в нём будут потеряны.

challenge icon

Задание

Легко
  • Когда notes.json содержит некорректный JSON, каждая команда выводит notes.json is damaged: <message> в stderr и завершает работу с кодом 1.
  • Файл notes.json в стартовом проекте намеренно повреждён.

Запусти node notes.js list до и после внесения изменений. Затем удали лишнюю запятую в notes.json и снова выполни команду list.

Попробуйте сами

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;

Все уроки раздела Основы Node.js