اشیای خطا در جاوا اسکریپت – به زبان ساده


هرزمان که خطایی در جاوا اسکریپت رخ میدهد، اشیای Error ایجاد میشوند. در اغلب موارد میتوانیم این اشیای خطای استاندارد را بسط دهیم تا اشیای خطای سفارشیشده خودمان را بسازیم. با ما تا انتهای این راهنما همراه باشید تا با اشیای خطا در جاوا اسکریپت آشنا شوید.
مشخصهها
اشیای خطا دو مشخصه دارند که در ادامه به تفصیل توضیح میدهیم.
name
با استفاده از name میتوان نام خطا را تعیین کرد یا بازگشت داد. به طور خاص این متد نام تابع سازندهای که خطا به آن تعلق دارد را بازگشت میدهد. این مشخصه میتواند 6 مقدار مختلف به صورت EvalError، RangeError، ReferenceError، TypeError، SyntaxError و URIError داشته باشد. این موارد را در ادامه بیشتر توضیح خواهیم داد. این انواع خطا از Object -> Error -> RangeError ارثبری میکنند.
message
پیام خطا را تعیین کرده یا بازگشت میدهد.
مثال
در این بخش چند مثال را برای روشنتر شدن موضوع بررسی میکنیم.
خطای ژنریک
امکان استفاده از شیء Error برای ایجاد یک Error جدید و سپس استفاده از کلیدواژه throw برای افزایش صراحت آن وجود دارد:
مدیریت انواع خاص خطا
امکان مدیریت انواع خاصی از خطا با استفاده از کلیدواژه instanceof به صورت زیر وجود دارد:
انواع سفارشی خطا
همچنین میتوانیم انواع خاص خودمان را با ایجاد کلاسی که شیء Error را extends میکند تعریف کنیم:
تطبیقپذیری این انواع خطای سفارشی در مرورگرهای مختلف به شرح زیر است:
انواع اشیای خطا
اکنون به بررسی انواع مختلف اشیای خطا که میتوان برای مدیریت خطاهای متفاوت مورد استفاده قرار داد میپردازیم.
1. EvalError
این نوع نشاندهنده وقوع یک خطا در تابع سراسری ()eval است. نکتهای که باید مورد توجه قرار گیرد این است که این نوع خطا در استاندارد کنونی SyntaxError پشتیانی نشده است و از سوی محیط اجرا ایجاد نمیشود. به جای آن میتوان از خطای SyntaxError استفاده کرد. با این حال همچنان به منظور تطبیقپذیری با نسخههای قبل، با نسخههای قبلی SyntaxError ارائه شده است.
ساختار آن به صورت زیر است:
در ادامه مثالی از کاربرد آن میبینید:
تطبیقپذیری آن نیز در مرورگرهای مختلف به شرح زیر است:
2. RangeError
این خطا وهلهای را مشخص میسازد که خطای «out of range error» را نمایش داده است. به بیان ساده زمانی رخ میدهد که یک مقدار خارج از بازه مجازش قرار گیرد:
این خطا در موارد زیر رخ میدهد:
- مقداری مانند ()String.prototype.normalize را ارسال کنیم که در یک رشته مجاز نیست:
- استفاده از سازنده آرایه برای ایجاد یک آرایه با طول غیرمجاز:
- در صورتی که متدهای عددی مانند ()Number.prototype.toExponential() ،Number.prototype.toFixed یا ()Number.prototype.toPrecision مقادیر نامعتبری دریافت کنند.
در ادامه مثالهای مختلفی از سناریوهای بروز این نوع خطا ارائه شده است.
در مورد مقادیر عددی
در مورد مقادیر غیر عددی
تطبیقپذیری این نوع خطا در مرورگرهای مختلف به شرح زیر است:
3. ReferenceError
نشاندهنده یک خطا در زمان تلاش برای ارجاع زدایی از یک ارجاع نامعتبر است یا هنگام ارجاع دادن به یک متغیر ناموجود رخ میدهد.
به مثالهای زیر توجه کنید:
ReferenceError به صورت خودکار ایجاد میشود:
در مثال زیر ReferenceError به صورت صریح ایجاد میشود:
تطبیقپذیری با این نوع خطا در مرورگرهای مختلف نیز به شرح زیر است:
4. SyntaxError
این خطا زمانی رخ میدهد که تلاش کنیم کد با ساختار نامعتبر را تفسیر کنیم. به بیان دیگر یک خطای SyntaxError زمانی رخ میدهد که موتور جاوا اسکریپت در زمان تحلیل کد با توکنها یا ترتیب توکنهایی مواجه شود که با ساختار زبان سازگار نباشد.
روش به دام انداختن یک خطای SyntaxError به صورت زیر است:
در کد زیر نیز با روش ساخت یک خطای SyntaxError آشنا میشوید:
تطبیقپذیری این خطا در مرورگرهای مختلف به صورت زیر است:
5. TypeError
نشاندهنده وجود خطا در متغیر نامعتبر (INVALID) یا نوع پارامتر است.
این خطا زمانی رخ میدهد که یکی از شرایط زیر وجود داشته باشد:
یک ناسازگاری نوع بین پارامترها یا عملوندهای یک تابع که ارسال یا اجرا میشوند وجود داشته باشد.
زمانی که تلاش کنیم مقداری که نمیتواند تغییر یابد را بهروزرسانی کنیم:
زمانی که یک مقدار به روش نامناسب مورد استفاده قرار گیرد:
روش به دام انداختن این خطا به صورت زیر است:
روش ایجاد خطا نیز به صورت زیر است:
در ادامه تطبیقپذیری مرورگرهای مختلف در مورد این نوع خطا را مشاهده میکنید:
6. URIError
این خطا زمانی رخ میدهد که تابع سراسری مدیریت URI به روش صحیحی استفاده نشده باشد:
به بیان سادهتر این خطا زمانی رخ میدهد که آرگومانهای نادرستی به تابعهای ()encodeURIComponent یا ()decodeURIComponent ارسال کنیم.
- ()encodeURIComponent – این تابع یک URI را با جایگزینی تمام وهلههای کاراکترهای خاص با یک، دو، سه یا چهار دنباله escape که انکودینگ UTF-8 کاراکتر را نمایش میدهند، کدگذاری میکند.
- ()decodeURIComponent – این تابع یک مؤلفه شناسه منبع یکنواخت (URI) را که قبلاً از سوی encodeURIComponent ساخته شده است دیکد میکند:
روش به دام انداختن خطای URIError به صورت زیر است:
برای تولید صریح آن نیز به صورت زیر عمل میکنیم:
تطبیقپذیری این نوع خطا روی مرورگرهای مختلف به شرح زیر است:
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای JavaScript (جاوا اسکریپت)
- مجموعه آموزشهای برنامهنویسی
- آموزش جاوا اسکریپت (JavaScript)
- مفهوم شیء (Object) در جاوا اسکریپت — از صفر تا صد
- جاوا اسکریپت چیست؟ — به زبان ساده
==