زبان جاوا اسکریپت به نوع داده ها اهمیت نمیدهد یا بهتر بگوییم جاوا اسکریپت یک زبان 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