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 תקין, כל פקודה מדפיסה ל־stderr את 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