Обработка ошибок
Часть раздела Основы 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 сохранит данные поверх повреждённого файла, и все заметки в нём будут потеряны.
Задание
Легко- Когда
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
1Запуск JavaScript в Node
Знакомство с NodeАргументы командной строкиКоманды