الدرس 9: معالجة الأخطاء بأناقة
كيفية فشل برنامجك يحدد الـVibe الذي يختبره كل من المستخدم والمطور الذي يقوم بتصحيح الأخطاء. تعني معالجة الأخطاء بإحساس سيئ (Bad Vibe) وجود حالات فشل صامتة أو رسائل غامضة أو انهيار التطبيق بأكمله.
إحساس الاستثناءات
الاستثناءات (الأخطاء/حالات الذعر) هي آليات للتحكم في التدفق. يجب استخدامها للإشارة إلى ظروف غير متوقعة أو غير قابلة للاسترداد، وليس منطق العمل القياسي.
المبدأ 1: افشل مبكراً، افشل بصوت عالٍ
إذا اكتشفت حالة تمنع التنفيذ الصحيح (مثل معلمة فارغة حيث يُطلب وجود واحدة)، قم بإثارة خطأ مُفيد على الفور. لا تدع البيانات السيئة تنتشر في عمق النظام.
java // إحساس سيئ: يسمح للقيمة Null بالتسبب في مشاكل لاحقاً public User getUser(String userId) { // ... returns null if not found return db.fetch(userId); }
// إحساس جيد: يتعامل صراحةً مع حالة الفشل عند الحد public User findUser(String userId) { if (userId == null || userId.isEmpty()) { throw new IllegalArgumentException("User ID cannot be empty."); } // ... }
المبدأ 2: رسائل الأخطاء المُفيدة
رسائل الأخطاء هي توثيق للفشل. يجب أن توفر سياقاً كافياً للمطور لفهم:
- ماذا حدث.
- أين حدث (ملف/دالة).
- لماذا حدث (إذا أمكن).
معالجة الأخطاء عند الحدود
التقط الأخطاء عند طبقة الحدود (مثل معالج API أو واجهة المستخدم) وقم بتحويل الخطأ التقني الخام إلى رسالة مصقولة وسهلة الاستخدام (لتجربة المستخدم UX) أو إدخال سجل مُهيكل (لتجربة المطور DX).
- Vibe المستخدم: 'فشل الدفع بسبب تفاصيل بطاقة غير صالحة.' (ودية)
- Vibe المطور (السجل): 'Stripe API أعادت 402 (أموال غير كافية). مُعرّف الطلب: req_abc123'