جلسه ۷ - مدیریت خطا - مقابله با مشکلات در کد

بررسی پاسخ‌های بخش ۶:

**پاسخ ۱:

  • حلقه از ۳ شروع می‌شود و تا ۱ ادامه پیدا می‌کند
  • i-- در هر تکرار عدد را کاهش می‌دهد
  • خروجی: “3”, “2”, “1”, “پایان!”

**پاسخ ۲: راه حل صحیح:

for (let i = 1; i <= 10; i++) {
    if (i % 2 === 0) {
        console.log(i);
    }
}
// یا روش بهینه‌تر:
for (let i = 2; i <= 10; i += 2) {
    console.log(i);
}

**پاسخ ۳:

  • این یک حلقه بی‌نهایت است
  • مقدار number در بدنه حلقه تغییر نمی‌کند، بنابراین شرط number < 5 همیشه true باقی می‌ماند

راه حل صحیح:

let number = 1;
while (number < 5) {
    console.log(number);
    number++; // این خط اضافه شد
}

**پاسخ ۴:

  • do...while: حداقل یک بار اجرا می‌شود
  • while: ممکن است حتی یک بار هم اجرا نشود

مثال تکمیلی:

// while - ممکن است اجرا نشود
let x = 10;
while (x < 5) {
    console.log("این اجرا نمی‌شود");
}
 
// do...while - حداقل یک بار اجرا می‌شود
let y = 10;
do {
    console.log("این اجرا می‌شود: " + y);
} while (y < 5);

خلاصه نکات مهم حلقه‌ها:

ویژگیforwhiledo…while
کاربردتعداد تکرار مشخصتعداد تکرار نامشخصحداقل یک بار اجرا
بررسی شرطابتداابتداانتها
اجرای حداقلیممکن است اجرا نشودممکن است اجرا نشودهمیشه یک بار

بخش ۷: مدیریت خطا - مقابله با مشکلات در کد

۱. ساختار try-catch-finally

برای مدیریت خطاهای زمان اجرا استفاده می‌شود.

سینتکس:

try {
    // کدی که ممکن است خطا دهد
} catch (error) {
    // مدیریت خطا
} finally {
    // کدی که همیشه اجرا می‌شود
}

۲. مثال‌های کاربردی

مثال ۱: خطای ReferenceError

try {
    console.log(variableNotDefined); // خطا - متغیر تعریف نشده
} catch (error) {
    console.log("خطا رخ داد: " + error.message);
} finally {
    console.log("این قسمت همیشه اجرا می‌شود");
}
// خروجی: "خطا رخ داد: variableNotDefined is not defined"
//         "این قسمت همیشه اجرا می‌شود"

مثال ۲: خطای SyntaxError در JSON

try {
    let data = JSON.parse('{name: "Ali"}'); // JSON نادرست
} catch (error) {
    console.log("خطای JSON: " + error.name);
    console.log("پیام: " + error.message);
}

مثال ۳: ایجاد خطای دلخواه با throw

try {
    let age = -5;
    if (age < 0) {
        throw new Error("سن نمی‌تواند منفی باشد");
    }
    console.log("سن معتبر است");
} catch (error) {
    console.log("خطا: " + error.message);
}
// خروجی: "خطا: سن نمی‌تواند منفی باشد"

۳. ویژگی‌های شیء Error

  • error.name: نوع خطا (مثل “ReferenceError”, “TypeError”)
  • error.message: توضیح خطا
  • error.stack: مسیر اجرای کد تا نقطه خطا

سؤالات تمرینی بخش ۷:

۱. خروجی کد زیر چیست؟

try {
    let result = 10 / 0;
    console.log(result);
} catch (error) {
    console.log("خطا: " + error.message);
} finally {
    console.log("پایان محاسبات");
}

۲. مشکل کد زیر چیست؟

try {
    let data = JSON.parse('{"name": "Ali"}');
    console.log(data.age.toString());
} catch (error) {
    console.log("خطا رخ داد");
}

۳. کدی بنویس که عددی از کاربر بگیرد و اگر عدد منفی بود، خطای دلخواه ایجاد کند.