مرشّحات الاستثناءات ومعالجة الأخطاء
مرشّحات الاستثناءات ومعالجة الأخطاء
الأمور تسوء: سجلّ مفقود، مدخل سيّئ، طرف ثالث يتأخّر. لدى NestJS طبقة استثناءات مدمجة تحوّل الأخطاء المرميّة إلى استجابات HTTP سليمة — ومرشّحات الاستثناءات تتيح لك تخصيص شكل تلك الاستجابات بدقّة.
استثناءات HTTP المدمجة
بدل صياغة استجابات الأخطاء يدويًا، ارمِ أحد استثناءات NestJS المدمجة. يلتقطه الإطار ويُرسل رمز الحالة وجسم JSON الصحيحين:
الشائعة: BadRequestException (400) وUnauthorizedException (401) وForbiddenException (403) وNotFoundException (404) وConflictException (409) وInternalServerErrorException (500).
استثناء HttpException الأساسي
لحالة أو جسم مخصّص، ارمِ HttpException مباشرة:
throw من أي مكان — خدمة أو أنبوب أو حارس. تلتقطه طبقة الاستثناءات عند الحدّ وتُنسّق الاستجابة. ويبقى معالجك نظيفًا.
كتابة مرشّح استثناءات
يأخذ مرشّح الاستثناءات التحكّم الكامل بالاستجابة للاستثناءات التي يلتقطها. زخرفه بـ @Catch() ونفّذ catch(exception, host):
تحصُر @Catch(HttpException) المرشّح بنوع؛ بينما تلتقط @Catch() بلا وسيط كل شيء، وهي مفيدة كشبكة أمان عامة.
تطبيق المرشّحات
الخلاصة
ارمِ استثناءات مدمجة كـ NotFoundException (أو HttpException للحالات المخصّصة) ودَع طبقة الاستثناءات تُنسّق استجابة HTTP. للتحكّم الكامل، اكتب مرشّح استثناءات بـ @Catch() وcatch(exception, host)، ثم اربطه لكل مسار أو عامًّا. يمنح المرشّح العام واجهتك شكل خطأ واحدًا متّسقًا وآمنًا. بهذا تكتمل دورة حياة الطلب — وأخير هذه المرحلة: المُزخرِفات المخصّصة.