سلام دوستان. تنها برنامهای که هیچ خطایی نداشته و نداره، برنامهٔ ننوشتهشده هست. برنامهای که توسط بزرگترین برنامهنویسها نوشته شده هم در معرض خطا و اشتباه هست. برای همین توی هر زبانی ابزارهای فراوانی برای جلوگیری و مدیریت خطاها وجود داره. امروز میخوایم با یک ابزار درونی و ذاتی جاوااسکریپت برای مدیریت خطاهای برنامه آشنا بشیم.
امروز یاد میگیریم که:
- توی جاوااسکریپت چه خطاهایی داریم؟
- دستور try...catch چیه؟
- دستور try...catch...finally چیه؟
- دستور try...finally چیه؟
- چه زمانی از try...catch استفاده کنیم؟
توی جاوااسکریپت چه خطاهایی داریم؟ 🤔
ابتدا باید بدونیم که توی جاوااسکریپت کدهای ما توی ۲ مرحله پردازش میشه: ابتدا Parse-time و بعد Runtime.
مرحله Parse-time چیه؟
مرحلهای هست که جاوااسکریپت کدهایی که نوشتیم رو به زبان قابل فهم خودش ترجمه میکنه. توی این مرحله اجرای واقعی برنامهٔ ما هنوز اتفاق نمیوفته. بلکه همونطور که گفتیم فقط کدهای ما به یک حالت دیگه تبدیل میشه.
مرحله Runtime چیه؟
مرحلهای هست که کدهای برنامهٔ ما به طور واقعی اجرا و خروجی مد نظرمون به ما برگردونده میشه.
اگه توی کدهای ما قواعد نوشتاری زبان رعایت نشده باشه، کدهای ما برای جاوااسکریپت قابل فهم نیست و بنابراین جاوااسکریپت نمیتونه کدهای ما رو ترجمه کنه و در نتیجه برنامه متوقف میشه. به چنین خطاهایی که هنگام Parse-time رخ میده میگیم Syntax Error (خطاهایی که به نحوه نوشتن کد مربوط هست). برای مثال:
if (true) {
توی کد بالا براکت پایانی بدنه if حذف شده. این کد، یک کد غیر قابل فهم برای جاوااسکریپت هست. چنین خطاهایی باعث میشه کل اجرای برنامه متوقف بشه. Syntax Error ها رو میتونیم با نگاه کردن به ظاهر کد متوجه بشیم.
اما نوع دیگهای از خطا هست که معمولاً تا زمانی که برنامهٔ ما بهطور واقعی اجرا نشه نمیتونیم اونها رو تشخیص بدیم. به این خطاها میگیم خطاهای Runtime یا Exception. چون هنگام اجرای واقعی کد خودشون رو نشون میدن.
توی چنین شرایطی قواعد نوشتاری زبان جاوااسکریپت (پرانتزها، ویرگولها، براکتها و ...) به درستی رعایت شده و کدهای ما ظاهر معتبری داره و توسط جاوااسکریپت ترجمه میشه. اما موقع اجرا که میرسه: 💥 برنامه با خطا مواجه میشه. برای مثال: