عیب یابی و انواع خطاهای جاوا اسکریپت
جاوا اسکریپت

عیب یابی و انواع خطاهای جاوا اسکریپت

بی مقدمه بریم سر اصل مطلب, انواع خطاهای جاوا اسکریپت:

1- خطاهای دستوری (Syntax Errors)

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

const func = () =>
console.log(hello)
}

خروجی:


}
^
SyntaxError: Unexpected token }

چون توی مثال بالا براکتی باز نکردیم کد ادیتور زمان اجرا خطا سینتکس داده و گفته اون قطعه کدمون براکت باز نداره.

2- خطا در ارجاع به منبع (Reference Errors)

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

console.log(x);

خروجی:

console.log(x);
            ^
ReferenceError: x is not defined

در این مثال متغیر x تعریف نشده و همونطور که ملاحظه میکنید بهمون گفته متغیر رفرنسی نداره.

3- خطا در نوع داده (Type Errors)

همونطوری که از اسمش هم مشخصه, این نوع خطا زمانی اتفاق می افته که نوع داده به کار برده شده درست نباشه. مثلا:

let num = 15;
console.log(num.split("")); 

خروجی:

console.log(num.split(""));
                ^
TypeError: num.split is not a function

بله; چون تابع split در جاوا اسکریپت فقط روی آرایه ها اعمال میشه, ولی اینجا متغیر num از نوع داده ای number هست به خطای تایپی برخوردیم.

4- خطای ارزیابی (Evaluation Error)

این خطا برای اکما اسکریپت های نسخه 6 به قبل بود و موتورهای جاوا اسکریپت امروزی, دیگه این خطا رو نمیدن. ولی بازم خوبه که بررسیش کنیم. مثال زیر رو ببینید:

try{
  throw new EvalError("'Throws an error'")
}catch(error){
  console.log(error.name, error.message)
}

خروجی:

EvalError 'Throws an error'

 همونطور که در مثال میبینید, زمانی که از تابع ()EvalError استفاده می شه، این خطا فراخوانی می شه.

5- خطا محدوده (Range Error)

اگر مقدار در محدوده عددی تعیین شده نباشه این خطا اتفاق میفته, مثال رو ببینید:

const checkRange = (num)=>{
  if (num < 30) throw new RangeError("Wrong number");
  return true
}
checkRange(20);

خروجی:

 if (num < 30) throw new RangeError("Wrong number");
                ^
RangeError: Wrong number

6- خطای آدرس پیوند (URI Error)

زمانی که شما از کارکتر های نامعتبر در فانکشن ها و توابع مربوط به url استفاده میکنید این خطا اتفاق میفته.

console.log(decodeURI("https://www.educative.io/shoteditor"))
console.log(decodeURI("%sdfk"))

خروجی:

console.log(decodeURI("%sdfk"));
            ^
URIError: URI malformed

7- خطای داخلی (Internal Error)

این خطا زمانی اتفاق می افته که دیتا های خروجی بی نهایت بشن و دیگه موتور جی اس نتونه حجم دیتا ها رو هندل کنه, مثل حلقه های بی نهایت. مثال زیر رو ببینید:

switch(condition) {
 case 1:
 ...
 break
 case 2:
 ...
 break
 case 3:
 ...
 break
 case 4:
 ...
 break
 case 5:
 ...
 break
 case 6:
 ...
 break
 case 7:
 ...
 break
 ... up to 500 cases
 }

 

 

نویسنده مقاله

درباره نویسنده

English teacher and senior site SEO manager and more than 3 years of experience in content production in all fields

راه های ارتباطی با نویسنده

این وب اپلیکشن در آذرماه 1401 توسط ابوالفضل برزگر توسعه یافته است