تكرار السؤال: …
الإجابة المختصرة
تحدث uncaughtException عند خطأ متزامن لم يلتقطه try/catch ويجب عندها إنهاء العملية، بينما تحدث unhandledRejection عند فشل Promise بدون catch handler.
الشرح
عند إطلاق استثناء متزامن غير معالج، تصبح حالة تطبيق Node.js غير مستقرة وغير مضمونة؛ التصرف الموصى به رسمياً هو تسجيل الخطأ، إغلاق الاتصالات الحالية بلباقة، ثم إنهاء العملية (process.exit(1)) وترك مشغل العمليات يعيد تشغيلها.
مثال بالكود
process.on("uncaughtException", (err) => {
console.error("Critical error:", err);
process.exit(1);
});أخطاء شائعة
- محاولة استكمال عمل السيرفر بعد uncaughtException مما يؤدي إلى تلف البيانات أو تسريب الذاكرة.