
با استفاده از مدیریت خطا یا Error Handling در برنامه نویسی میتوانیم جلوی خطاها و اشتباهات ناخواسته را گرفته و عملکرد برنامه خود را از نظر کد و پاسخگویی افزایش دهیم.
یک واقعیت در مورد خطاها در برنامه نویسی وجود دارد و آن این است که هر چقدر هم یک برنامه نویس ماهر باشیم، باز هم احتمال وقوع خطا و اشتباه در برنامه ما وجود خواهد داشت.
به وجود آمدن یک خطا دلایلی مختلفی میتواند داشته باشد؛ نظیر اشتباهات برنامه نویسی، ورودی نامعتبر از سمت کاربر، خطای سمت سرور و …
به دلیل مفسری بودن زبان جاوا اسکریپت، زمانی که در اجرای یک برنامه به خطایی برخورد میکنیم، اجرای بقیه برنامه متوقف شده و پیغام خطایی در کنسول مربوط چاپ میشود.
اما با استفاده از ساختاری که در این مقاله به بررسی آن می پردازیم، خواهید توانست توقف برنامه را در هنگام برخورد با یک خطا مدیریت و کنترل و بعضاً دستورات دلخواه خود را اجرا کنید.
فهرست محتوای آموزش
استفاده از try catch برای مدیریت خطا در javascript
ساختاری در اکثر زبان های برنامه نویسی و البته زبان برنامه نویسی جاوا اسکریپت وجود دارد که به کمک آن میتوان وقوع یک خطا را مدیریت کرد.
این ساختار به ساختار try-catch
معروف است. این ساختار که به آن try…catch…finally نیز گفته میشود، در مدیریت خطا جاوا اسکریپت بسیار کاربردی می باشد.
این ساختار دو بخش اصلی دارد:
- بلوک try : این بخش روال اصلی برنامه ما را نشان میدهد. قسمتی از کد که احتمال میدهیم باعث ایجاد خطایی شود را در این بلوک قرار خواهیم داد.
- بلوک catch : اگر دستورات و روال هایی که در بلوک
try
قرار دارند با خطا مواجه شوند، پس از ایجاد خطا، بلوکcatch
اجرا خواهد شد.
یک بخش دیگر را نیز میتوان در انتهای ساختار try...catch
در نظر گرفت:
- بلوک finally : این بلوک در هر صورت و در انتهای اجرای کامل یکی از دو بلوک بالا اجرا خواهد شد.
ساختار try-catch مدیریت خطا
از نظر نحوی syntax این ساختار به صورت زیر نوشته میشود.
try { // Code to run } catch (e) { // Code to run if an exception occurs } finally { // Code that is always executed }
چگونگی اجرای بلوک try-catch
جهت درک بهتر نحوه اجرا، فرض کنید قطعه کد ساده زیر را در اختیار داریم.
try { alert(1); // Some Codes alert(2); } catch { alert(3); } finally { alert(4); }
در ابتدای بلوک try سعی میشود پیامی با محتوای 1 به ما نشان داده شده و سپس یک خط کد (تابع یا هر چیز دیگری) اجرا میشود. در انتها نیز عدد 2 به صورت alert نمایش داده خواهد شد.
در صورتی که در اجرای این سه خط کد مشکلی به وجود بیاید، در بلوک catch عدد 3 و در انتهای برنامه به واسطه بلوک finally عدد 4 نمایش داده میشود.
دو سناریوی اجرا میتوان برای این قطعه کد در نظر گرفت.
- اجرای صحیح: در این حالت تمام دستورات بلوک try و پس از آن finally اجرا خواهد شد. یعنی ترتیب نمایش اعداد به صورت 1 و 2 و 4 خواهد بود.
- اجرا با خطا: در این حالت دستورات موجود در بلوک try تا قبل از به وجود آمدن خطا، سپس دستورات بلوک catch و در نهایت بلوک finally اجرا خواهند شد. یعنی ترتیب نمایش 1 و 3 و 4 میشود.
کار با شئ خطا یا error در جاوا اسکریپت
هنگامی که در اجرای یک برنامه جاوا اسکریپت به خطایی برخورد میکنیم، موتور زبان js یک شئ که حاوی اطلاعاتی در مورد خطای اتفاق افتاده می باشد را ایجاد میکند. این شئ به عنوان ورودی به بلوک catch
فرستاده خواهد شد.
تمام اشیاء ساخته شده در اثر خطا دو ویژگی (property) اصلی زیر را دارا هستند:
- نام (name) : مشخص کننده یک نام برای خطای به وجود آمده است.
- پیام (message) : دارای پیامی مرتبط با خطای به وجود آمده است.
ممکن است خطاهای مختلف ویژگی ها و حتی متدهای مختلفی داشته باشند. برای مثال یکی دیگر از property هایی که به طور وسیع در خطاهای استاندارد وجود دارد، ویژگی stack است.
- پشته (stack) : سلسله مراتب صدا زده شدن توابع مختلف تا وقوع خطا را به ما خروجی میدهد.
در قطعه کد زیر از تابعی که تعریف نشده استفاده میکنیم تا باعث ایجاد یک خطا شویم. سپس اطلاعات مربوط به خطا را بررسی میکنیم.
try { unDefinedVariable; } catch (e) { alert(e.name); // ReferenceError alert(e.message); // unDefinedVariable is not defined }
با ایجاد خطا، ابتدا پیام ReferenceError
و سپس پیام unDefinedVariable is not defined را مشاهده خواهیم کرد.
دستور throw برای ساخت خطای دلخواه
گاهی اوقات نیاز داریم خطاها (Error) یا استثنا (Exception) های دلخواه خود را در خلال برنامه و با توجه به شرایط ایجاد کنیم.
با استفاده از دستور throw
میتوان یک خطا را به وجود آورد یا به اصطلاح برنامه نویسی پرتاب کرد!
ساختار throw برای مدیریت خطا
ساختار کلی استفاده از دستور throw
به صورت زیر است.
throw <Error-Object>
ایجاد خطای جدید با throw
همانطور که میبینید، در جلوی throw
می بایست یک شئ قرار داده شود. این شئ میتواند شئی دلخواه که خودمان آنرا ایجاد کرده ایم بوده یا از اشیاء آماده جاوا اسکریپت استفاده کنیم.
اشیاء مختلفی برای مدیریت خطا جاوا اسکریپت وجود دارند که مرتبط با خطاها هستند. اشیائی نظیر Error
یا Exception
یا SyntaxError
.
کار با شئ Error
شئ Error
را میتوان به سادگی و با استفاده از مفهوم ایجاد شئ در برنامه نویسی ایجاد کرد. از این کلاس میتوان استفاده های زیادی در مدیریت خطا جاوا اسکریپت کرد.
در حالت ساده، به عنوان تنها ورودی سازنده (Constructor) آن میتوان یک متن پیام (یا همان خصوصیت message) را به شئ داد.
به قطعه کد زیر دقت کنید.
try { var n = prompt("Please Enter the Number") if( n > 50 ){ throw new Error("The Number is too big!"); } } catch (e) { alert(e.message); }
این برنامه یک عدد را به عنوان ورودی از ما گرفته و در صورتی که عدد از 50 بزرگتر باشد یک خطا با پیامی مرتبط پرتاب میکند.
در ادامه و در بلوک catch
آن پیام را دریافت کرده و به صورت پیام به کاربر نمایش میدهیم.
به همین راحتی میتوانیم خطاهای مختلفی ایجاد کرده و در بلوک catch با توجه به نوع پیام، کارهای مناسبی را انجام دهیم.
این آموزش برای همیشه رایگانه! میتونید با اشتراکگذاری لینک این صفحه از ما حمایت کنید یا با خرید یه فنجون نوشیدنی بهمون انرژی بدید!
میخوام یه نوشیدنی مهمونتون کنم
سلام من میخواستم در یک سایت نام نویسی کنم کار نمی کرد مینوشت
مینوشت جاوا اسکریپت وکوکی ها غیر فعال هستند پس از فعال سازی مجدداً
صفحه را بارگیری کنید
اما در مرور گر من کوکی ها وجا وا اسکریپت فعال بودند
سلام
این یک خطای برنامهنویسی نیست و میتونه دلایل مختلفی داشته باشه!
ممکنه برنامههای جاوا اسکریپت سایت به درستی لود نشده باشند (به دلیل اتصال اینترنت) یا مشکلی در مروگر وجود داشته باشه.
بهتره ابتدا کش مرورگر رو پاک کنید، سایت رو مجدداً با ctrl + F5 رفرش کنید، اگر همچنان خطا برقرار بود، از یه مرورگر یا دستگاه دیگه هم تست کنید.
موفق باشید.