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