آموزش جاوا اسکریپت – فصل بیست و سوم: مدیریت خطا (Error Handling)

طبق شرایط و کدهای نوشته شده توسط شما در زبان جاوا اسکریپت ممکن است شما بارها با ارور زمان اجرا مواجه شوید. ارور های runtime، پیغام خطا های رایج زمان اجرای جاوا اسکریپت هستند که در این فصل خواهید آموخت چگونه می توانید آن ها را دریافت کنید و عملیات خاصی را در صورت تخشیص آن ها اجرا کنید.

جاوا اسکریپت - فصل بیست سوم: مدیریت خطا Error Handling

زبان جاوا اسکریپت به نوع داده ها اهمیت نمیدهد یا بهتر بگوییم جاوا اسکریپت یک زبان loosely-typed است. پس شما ارور زمان کامپایل یا compile time error دریافت نخواهید کرد.

در زبان جاوا اسکریپت ممکن است شما بارها با ارور زمان اجرا مواجه شوید، یعنی runtime error که شکل معمول پیغام خطا در جاوا اسکریپت هنگام دسترسی به عناصر و یا فانکشن هایی است که وجود ندارند.

مانند بسیاری از دیگر زبان های برنامه نویسی مانند زبان جاوا و سی شارپ جاوا اسکریپت مدلی از مدیریت پیغام خطا را ارائه میدهد که به try-catch معروف است.

در روش مدیریت پیغام خطای try-catch برنامه نویس در واقع بررسی می کند که قبل از انجام هر عملیاتی آیا ممکن است که با پیغام خطای runtime مواجه شود یا خیر. در صورت بروز خطا در دستور catch می توان به سیستم گفت که چه کاری انجام دهد.

نحوه نگارش بلاک try-catch-finally برای مدیریت خطا در زبان جاوا اسکریپت به شرح زیر است:

try
{
    //  کدی که ممکن است پیغام خطا ایجاد کند
}
catch(ex)
{
    // کدی که در صورت وجود خطا اجرا می شود
}
finally{
    // کدی که در هر صورت، چه با خطا چه بدون خطا اجرا می شود.
}

try: قطعه کدی که ممکن است با پیغام خطا مواجه شود را درون این بلاک قرار دهید.

catch: قطعه کدی بنویسید که در هنگامی که اروری کشف می شود، اجرا خواهد شد. این بلاک حاوی پارامترهایی خواهد بود که باعث بروز خطا شده است. به طور معمول catch برای نشان دادن و چاپ کردن پیغام خطا های ممکن در سیستم استفاده می شود.

finally: کد درون این بلاک در هر صورت اجرا خواهد شد چه سیستم با ارور مواجه شود چه با ارور مواجه نشود. این بلاک به طور معمولی استفاده می شود تا کارهای باقیمانده را بر آن انجام دهید یا در صورت بروز ارور متغیرهای ست شده را دوباره به حالت اول بازگردانید.

در مثال زیر یک قطعه کد برای مدیریت پیغام خطا نشان داده شده است:

try
{
    var result  =  Sum(10, 20); // Sum هنوز تعریف نشده
}
catch(ex)
{
    document.getElementById("errorMessage").innerHTML = ex;
}

فصل 23 – مثال 1

در مثال بالا ما عملیاتی به نام Sum را صدا میزنیم که هنوز تعریف نشده است. پس در بلاک try یک پیغام خطای ایجاد خواهد شد که به بلاک catch انتقال میابد.

بلاک کد finally همانگونه که در بالاتر گفته شد در هر صورت چه با ارور چه بدون ارور، اجرا خواهد شد به مثال زیر توجه کنید:

try
{
     var result  =  Sum(10, 20); // Sum هنوز تعریف نشده
}
catch(ex)
{
    document.getElementById("errorMessage").innerHTML = ex;
}
finally{
    document.getElementById("message").innerHTML = "بلاخره این بلاک اجرا شد";
}

فصل 23 – مثال 2

کلمه کلیدی throw در مدیریت پیغام خطا

برای ایجاد یک پیغام خطا در سیستم از کلمه کلیدی throw استفاده می شود. به مثال زیر توجه کنید:

try
{
    throw "خطایی رخ داد";
}
catch(ex)
{
    alert(ex);
}

فصل 23 – مثال 3

شما همچنین می توانید یک شیء کامل جاوا اسکریپت را با کلمه کلیدی throw به‌ عنوان یک پیغام خطا به سیستم بازگردانید. مانند مثال زیر:

try 
{
    throw {
        number: 101,
        message: "خطایی رخ داد"
    };
}
catch (ex) {
    alert(ex.number + "- " + ex.message);
}

فصل 23 – مثال 4

ویدیوها و مطالب مشابه