معالجة الأخطاء
جزء من قسم أساسيات 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>إلى مجرى الخطأ القياسي وينهي التنفيذ بالرمز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;