~2 min read • Updated Dec 27, 2025
1. دستهبندی خطاها
- خطاهای استاندارد جاوااسکریپت: مانند
SyntaxError،ReferenceError،TypeError. - DOMException: خطاهای استاندارد مرورگر.
- خطاهای سیستم: ناشی از محدودیتهای سیستمعامل (مثلاً تلاش برای باز کردن فایل غیر موجود).
- AssertionError: خطاهای منطقی غیرمنتظره که توسط ماژول
assertایجاد میشوند. - خطاهای تعریفشده توسط کاربر: خطاهایی که در کد برنامه ایجاد میشوند.
2. انتشار و مدیریت خطاها
نحوهٔ انتشار خطاها به نوع API بستگی دارد:
- APIهای همزمان: خطاها را با
throwمنتشر میکنند و باید باtry...catchمدیریت شوند. - APIهای غیرهمزمان مبتنی بر Promise: خطاها با
rejectمنتشر میشوند و باید باcatchمدیریت شوند. - APIهای غیرهمزمان مبتنی بر Callback: خطاها بهعنوان آرگومان اول Callback ارسال میشوند.
- EventEmitterها: خطاها از طریق رویداد
'error'منتشر میشوند.
3. نمونهها
// همزمان
try {
const m = 1;
const n = m + z; // ReferenceError
} catch (err) {
console.error(err);
}
// غیرهمزمان با Promise
const fs = require('node:fs/promises');
(async () => {
try {
await fs.readFile('file.txt');
} catch (err) {
console.error('Error reading file!', err);
}
})();
// غیرهمزمان با Callback
const fs = require('node:fs');
fs.readFile('file.txt', (err, data) => {
if (err) {
console.error('Error reading file!', err);
return;
}
});
4. ویژگیهای کلاس Error
error.message: توضیح متنی خطا.error.code: کد خطا برای شناسایی پایدار.error.stack: مسیر اجرای کد هنگام ایجاد خطا.error.cause: علت اصلی خطا (از نسخه 16.9.0).
5. انواع خطاهای مهم
- AssertionError: شکست در اعتبارسنجی منطقی.
- RangeError: آرگومان خارج از محدودهٔ معتبر.
- ReferenceError: دسترسی به متغیر تعریفنشده.
- SyntaxError: کد نامعتبر جاوااسکریپت.
- SystemError: خطاهای ناشی از محدودیتهای سیستمعامل.
نتیجهگیری
مدیریت صحیح خطاها در Node.js برای ساخت برنامههای پایدار و مقاوم حیاتی است. توسعهدهندگان باید با انواع خطاها و مکانیزمهای انتشار آنها آشنا باشند و از ابزارهایی مانند try...catch، Promise.catch، و رویداد 'error' در EventEmitterها برای مدیریت مناسب استفاده کنند.
Written & researched by Dr. Shahin Siami