انتقل إلى المحتوى الرئيسي

MODULE 10 - إدارة الاستثناءات وتسجيل الدخول

مرحبًا بكم في الوحدة 10! 📋​

تطبيقك يواجه خطأ... ماذا يرى المستخدم؟ تتبع مكدس Java غير قابل للقراءة؟ هذه الوحدة تعلمك كيفية إدارة الأخطاء بشكل صحيح وتتبع ما يحدث في تطبيقك.


🎓 أهداف التعلم​

في نهاية هذه الوحدة، ستكون قادرًا على:

  1. ✅ إنشاء استثناءات مخصصة
  2. ✅ استخدام @ControllerAdvice لإدارة شاملة
  3. ✅ إرجاع ردود خطأ منظمة
  4. ✅ تسجيل الدخول بفعالية مع SLF4J
  5. ✅ تكوين Logback لبيئات مختلفة

📚 المتطلبات الأساسية​

قبل البدء في هذه الوحدة، يجب أن تكون قد:

  • ✅ أكملت الوحدات من 1 إلى 9
  • ✅ أنشأت وحدات تحكم REST
  • ✅ فهمت رموز HTTP (4xx، 5xx)
  • ✅ لديك معرفة بالاستثناءات في Java

🗺️ خطة الوحدة​

الجزء النظري (4 فصول)​

الفصل 1: إدارة الاستثناءات​

المدة: 45 دقيقة

المحتوى:

  • استثناءات مخصصة
  • تسلسل هرمي للاستثناءات
  • أفضل الممارسات
  • Checked vs Unchecked

لماذا هو مهم؟ أساس إدارة الأخطاء


الفصل 2: @ControllerAdvice​

المدة: 1 ساعة

المحتوى:

  • @ControllerAdvice و@RestControllerAdvice
  • @ExceptionHandler
  • ردود خطأ موحدة
  • ProblemDetail (RFC 7807)
  • ResponseStatusException

لماذا هو مهم؟ إدارة مركزية للأخطاء


الفصل 3: تسجيل الدخول مع SLF4J​

المدة: 45 دقيقة

المحتوى:

  • SLF4J وواجهات تسجيل الدخول
  • مستويات السجل (TRACE → ERROR)
  • أنماط المسجل
  • MDC (Mapped Diagnostic Context)
  • Lombok @Slf4j

لماذا هو مهم؟ تشخيص المشاكل


الفصل 4: تكوين Logback​

المدة: 45 دقيقة

المحتوى:

  • logback-spring.xml
  • Appenders (Console, File, Rolling)
  • الأنماط والتنسيق
  • ملفات تعريف Spring
  • سجلات JSON للإنتاج

لماذا هو مهم؟ تكوين احترافي


الجزء العملي (2 تدريبات)​

TP10.1: إدارة مركزية للأخطاء​

المدة: 1 ساعة و30 دقيقة

الهدف: تنفيذ نظام كامل لإدارة الأخطاء

ستقوم بـ:

  • إنشاء استثناءات خاصة بالأعمال
  • تنفيذ GlobalExceptionHandler
  • توحيد ردود الخطأ
  • اختبار مع سيناريوهات مختلفة

TP10.2: نظام تسجيل الدخول​

المدة: 1 ساعة و30 دقيقة

الهدف: تكوين تسجيل دخول احترافي

ستقوم بـ:

  • تكوين Logback
  • إنشاء سجلات لكل بيئة
  • تنفيذ MDC للتتبع
  • سجلات الملفات مع التدوير

📊 المدة الإجمالية​

النوعالمدة
النظرية3 ساعات و15 دقيقة (4 فصول)
العملية3 ساعات (2 تدريبات)
الإجمالي6 ساعات و15 دقيقة (~2 جلسات)

🎯 ما ستفهمه​

قبل هذه الوحدة​

// خطأ غير مُدار 😰
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
return userRepository.findById(id).orElseThrow();
// → 500 Internal Server Error مع تتبع مكدس كامل!
}

// لا توجد سجلات
public void processOrder(Order order) {
// هل يعمل؟ هل يفشل؟ لا فكرة...
}

بعد هذه الوحدة​

// إدارة نظيفة للأخطاء ✅
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
return userService.findById(id);
// → 404 {"type": "user-not-found", "title": "User not found", ...}
}

// تسجيل منظم
@Slf4j
public class OrderService {
public void processOrder(Order order) {
log.info("Processing order {} for user {}", order.getId(), order.getUserId());
// ...
log.debug("Order total calculated: {}", total);
}
}

رد خطأ نظيف:

{
"type": "https://api.example.com/errors/user-not-found",
"title": "User Not Found",
"status": 404,
"detail": "User with ID 123 was not found",
"instance": "/api/users/123",
"timestamp": "2024-01-15T10:30:00Z"
}

🚀 لماذا هذه الوحدة أساسية​

1. تجربة المستخدم​

بدون إدارة:
- تتبع مكدس مكشوف للعميل 😱
- رسائل خطأ غامضة
- صعوبة في التصحيح على الجانب الأمامي

مع الإدارة:
- رسائل واضحة ومترجمة
- رموز خطأ موثقة
- تنسيق JSON موحد

2. التصحيح في الإنتاج​

بدون سجلات:
- "التطبيق تعطل الليلة الماضية"
- "لا فكرة عما حدث"
- مستحيل إعادة الإنتاج

مع السجلات:
- تتبع كامل للأحداث
- سياق المستخدم (MDC)
- تصفية حسب المستوى

3. الامتثال للمعايير​

RFC 7807 - تفاصيل المشكلة لواجهات برمجة التطبيقات HTTP
├── تنسيق موحد
├── قابلية التشغيل البيني
└── توثيق تلقائي

🗺️ التقدم في التدريب​

الوحدة 10 = تطبيق جاهز للإنتاج!


📖 كيفية التعامل مع هذه الوحدة​

التقدم الموصى به​

  1. الفصل 1 → فهم استثناءات Java
  2. الفصل 2 + TP10.1 → تنفيذ الإدارة الشاملة
  3. الفصل 3 → تعلم تسجيل الدخول
  4. الفصل 4 + TP10.2 → تكوين Logback

✅ التقييم الذاتي​

قبل البدء، أجب:

  1. هل تعرف كيفية إنشاء استثناء مخصص؟ ☐ نعم ☐ لا
  2. هل تعرف @ControllerAdvice؟ ☐ نعم ☐ لا
  3. هل تستخدم System.out.println للتصحيح؟ ☐ نعم ☐ لا
  4. هل تعرف كيفية تكوين Logback؟ ☐ نعم ☐ لا

إذا أجبت "لا" في أي مكان، هذه الوحدة لك!


🎯 الخطوة التالية​

جاهز لاحتراف إدارة الأخطاء الخاصة بك؟

➡️ ابدأ مع الفصل 1: إدارة الاستثناءات


⬅️ العودة إلى خطة الدورة