خطاها: مقدمه (Errors Intro)
اینجا با «خطاهای جاوااسکریپت» آشنا می شویم. «خطا (Error)» یعنی برنامه طبق انتظار اجرا نشود. دلیلش می تواند اشتباه برنامه نویس، ورودی بد، یا شرایط غیرمنتظره باشد. درک خطاها مهم است، چون با آن ها روزانه روبه رو می شویم.
انواع خطاهای رایج
انواع مهم خطاها را بشناسیم و تفاوتشان را ببینیم.
- ReferenceError: اشاره به متغیرِ وجودنداشته.
- TypeError: کار نادرست روی نوعِ داده.
- RangeError: مقدار خارج از بازه ی مجاز.
- URIError: استفاده ی نادرست از توابع URI.
- SyntaxError: خطای دستوری در کد.
- EvalError: مربوط به eval؛ امروزه استفاده نمی شود.
مدیریت خطا با try...catch
«try...catch» یعنی تلاش کن، اگر شکست خورد، مهارش کن. «استثناء (Exception)» همان خطای زمان اجراست.
try {
// کد حساس به خطا
}
catch (err) {
// واکنش به خطا
}
ReferenceError: متغیر پیدا نشد
وقتی به متغیرِ تعریف نشده اشاره می کنی، ReferenceError رخ می دهد.
let x = 5;
try {
x = y + 1;
}
catch (err) {
let text = err.name;
}
TypeError: عملِ نادرست روی نوع
اگر کاری مناسب آن نوع نباشد، TypeError می گیری. مثل صدا زدن عدد.
try {
Anna(5);
}
catch (err) {
let text = err.name;
}
RangeError: مقدار خارجِ محدوده
وقتی پارامتر از بازه ی مجاز بیرون باشد، RangeError رخ می دهد.
try {
new Array(-1);
}
catch (err) {
let text = err.name;
}
URIError: آدرس های نادرست
اگر ورودیِ توابع URI بد باشد، URIError می گیری.
try {
decodeURI("%%%");
}
catch (err) {
let name = err.name;
}
SyntaxError: دستور زبان نادرست
وقتی گرامر زبان نقض شود، SyntaxError پیش از اجرا رخ می دهد.
// این خط پارس نمی شود
let fName = "John);
// اجرای کد متوقف می شود
نکته: SyntaxError را با try...catch نمی گیری. چون قبلِ اجرا رخ می دهد.
جمع بندی سریع
- خطاها طبیعی هستند؛ نترس.
- try...catch خطا را مهار می کند.
- ReferenceError یعنی متغیر گم شده.
- TypeError یعنی کارِ نامعتبر روی نوع.
- SyntaxError قبلِ اجرا رخ می دهد.
بیشتر بخوان: خطاهای جاوااسکریپت بی صدا چیست؟ همچنین صفحه اشکال زدایی جاوااسکریپت را ببین.
منبعِ مرتبط: JavaScript Silent Errors و JavaScript Debugging.