المهارات error-handling-patterns
📦

error-handling-patterns

آمن

تنفيذ أنماط معالجة الأخطاء القوية

متاح أيضًا من: wshobson

بناء تطبيقات أكثر مرونة من خلال إتقان أنماط معالجة الأخطاء بما في ذلك الاستثناءات، وأنواع Result، ومنطق إعادة المحاولة، وقواطع الدائرة عبر Python وTypeScript وRust وGo.

يدعم: Claude Codex Code(CC)
🥉 72 برونزي
1

تنزيل ZIP المهارة

2

رفع في Claude

اذهب إلى Settings → Capabilities → Skills → Upload skill

3

فعّل وابدأ الاستخدام

اختبرها

استخدام "error-handling-patterns". كيف أتعامل مع الأخطاء عند استدعاء API خارجي؟

النتيجة المتوقعة:

لاستدعاءات API الخارجية، نفّذ طبقات متعددة من معالجة الأخطاء: (1) تسلسل هرمي مخصص للاستثناءات لأنواع الأعطال المختلفة، (2) إعادة المحاولة مع backoff أسي للأخطاء العابرة، (3) قاطع الدائرة لمنع الأعطال المتتالية، (4) التدهور التدريجي مع بيانات احتياطية. نهج مثال: أنشئ استثناءات مخصصة (NetworkError، TimeoutError، RateLimitError)، غلّف استدعاءات API في decorator إعادة محاولة مع 3 محاولات وbackoff أسي، استخدم قاطع الدائرة لتتبع معدلات الفشل، وفّر احتياطاً مخبّأً عندما يكون API غير متاح.

استخدام "error-handling-patterns". متى يجب استخدام أنواع Result بدلاً من الاستثناءات؟

النتيجة المتوقعة:

استخدم أنواع Result للإخفاقات المتوقعة (أخطاء التحقق من الصحة، أخطاء عدم العثور، أخطاء منطق العمل) حيث يجب على المستدعي التعامل صراحةً مع حالتي النجاح والفشل. استخدم الاستثناءات للحالات الاستثنائية حقاً (مؤشرات null، نفاد الذاكرة، أخطاء وقت التشغيل غير المتوقعة). تجعل أنواع Result معالجة الأخطاء صريحة في نظام النوع، مما يجبر المستدعين على النظر في حالات الفشل. في TypeScript، Result<T, E> = { ok: true, value: T } | { ok: false, error: E }. في Rust، المشغل ؟ ونوع Result<T, E> يوفران دعماً مدمجاً. هذا النهج يحسّن قابلية قراءة الكود ويقلل أخطاء وقت التشغيل غير المتوقعة.

التدقيق الأمني

آمن
v1 • 2/24/2026

This skill is a documentation and educational resource about error handling patterns. The static scanner flagged 49 potential issues, but after evaluation all findings are FALSE POSITIVES. The detected patterns (backtick syntax examples, HTTP library examples, error categories) are educational code snippets in markdown documentation, not executable malicious code. No security concerns identified.

2
الملفات التي تم فحصها
674
الأسطر التي تم تحليلها
0
النتائج
1
إجمالي عمليات التدقيق
لا توجد مشكلات أمنية
تم تدقيقه بواسطة: claude

درجة الجودة

38
الهندسة المعمارية
100
قابلية الصيانة
87
المحتوى
30
المجتمع
100
الأمان
100
الامتثال للمواصفات

ماذا يمكنك بناءه

تحسين موثوقية التطبيق

إضافة معالجة قوية للأخطاء للميزات الجديدة أو الموجودة مع تسلسلات هرمية مناسبة للاستثناءات ورسائل أخطاء ذات مغزى.

بناء أنظمة متسامحة مع الأعطال

تنفيذ منطق إعادة المحاولة، وقواطع الدائرة، والتدهور التدريجي للأنظمة الموزعة والخدمات المصغرة.

تعلم الأنماط عبر اللغات

فهم أساليب معالجة الأخطاء عبر Python وTypeScript وRust وGo لاختيار أفضل نهج لكل حالة.

جرّب هذه الموجهات

معالجة الاستثناءات الأساسية
ساعدني في تنفيذ معالجة مناسبة للأخطاء لدالة تجلب بيانات المستخدم من قاعدة البيانات. أريد إنشاء فئات استثناءات مخصصة والتعامل مع سيناريوهات أخطاء مختلفة بشكل مناسب.
تنفيذ نوع Result
أظهر لي كيفية تنفيذ نمط نوع Result في TypeScript لتحليل بيانات JSON. ضمّن أنواع أخطاء مناسبة ومعالجة متسلسلة للأخطاء.
إعادة المحاولة مع Backoff
أنشئ decorator في Python ينفذ منطق إعادة المحاولة مع backoff أسي لاستدعاءات الشبكة. تعامل مع أنواع استثناءات مختلفة وضمّن محاولات قابلة للتكوين.
نمط قاطع الدائرة
نفذ نمط قاطع الدائرة في Python لمنع الأعطال المتتالية عند استدعاء API خارجي. ضمّن الحالات المغلقة والمفتوحة ونصف المفتوحة.

أفضل الممارسات

  • افشل بسرعة من خلال التحقق من المدخلات مبكراً وتوفير رسائل أخطاء ذات مغزى مع السياق
  • احفظ سياق الخطأ بما في ذلك آثار المكدس، والطوابع الزمنية، والبيانات الوصفية ذات الصلة
  • تعامل مع الأخطاء على المستوى المناسب حيث يمكنك الاستجابة لها بشكل ذي مغزى
  • سجّل الأخطاء بشكل مناسب - سجّل الأخطاء غير المتوقعة، وليس إخفاقات التحقق من الصحة المتوقعة

تجنب

  • الالتقاط بشكل واسع جداً باستخدام معالجات Exception عامة تخفي الأخطاء
  • كتل catch فارغة تبتلع الأخطاء بصمت دون تسجيل أو معالجة
  • إرجاع رموز أخطاء بدلاً من استخدام استثناءات مناسبة أو أنواع Result
  • تجاهل أخطاء async من خلال عدم معالجة promise rejections بشكل صحيح

الأسئلة المتكررة

ما الفرق بين الاستثناءات وأنواع Result؟
الاستثناءات هي معالجة تقليدية للأخطاء تعطل تدفق التحكم باستخدام كتل try-catch. أنواع Result هي أنواع نجاح/فشل صريحة تتطلب من المستدعي التعامل مع كلتا الحالتين. تجعل أنواع Result معالجة الأخطاء مرئية في نظام النوع وهي شائعة في لغات البرمجة الوظيفية مثل Rust وHaskell.
متى يجب استخدام قاطع الدائرة؟
استخدم قاطع الدائرة عند استدعاء خدمات أو APIs خارجية قد تصبح غير متوفرة. يمنع الأعطال المتتالية بالفشل السريع عندما تكون الخدمة معطلة، بدلاً من ربط الموارد بطلبات فاشلة متكررة. ينتقل القاطع بين الحالات المغلقة (طبيعي)، والمفتوحة (فشل)، ونصف المفتوحة (اختبار التعافي).
كيف يعمل الـ backoff الأسي لإعادة المحاولة؟
يزيد الـ backoff الأسي وقت الانتظار بين محاولات إعادة المحاولة (مثلاً ثانية واحدة، ثانيتين، 4 ثوانٍ، 8 ثوانٍ). هذا يمنع إغراق خدمة فاشلة بطلبات متكررة مع إعطائها الوقت للتعافي. أضف jitter (تباين عشوائي) لمنع مشاكل القطيع الرعدي.
ما هو التدهور التدريجي؟
يوفر التدهور التدريجي وظيفة احتياطية عند حدوث خطأ. على سبيل المثال، إذا فشلت خدمة التخزين المؤقت، انتقل إلى قاعدة البيانات. إذا فشلت كلتاهما، أعد بيانات مخبأة قديمة. يستمر التطبيق في العمل بوظائف مخفضة بدلاً من الفشل الكامل.
هل يجب التقاط الاستثناءات أم السماح لها بالانتشار؟
التقط الاستثناءات فقط حيث يمكنك التعامل معها بشكل ذي مغزى. اسمح للاستثناءات غير المتوقعة بالانتشار إلى معالج أخطاء مركزي يسجلها بشكل مناسب. هذا يمنع إخفاء الأخطاء بكتل catch واسعة جداً مع ضمان تسجيل الأخطاء والإبلاغ عنها بشكل صحيح.
كيف أنشئ رسائل أخطاء ذات مغزى؟
تتضمن رسائل الخطأ الجيدة ما فشل، ولماذا فشل، وما الإجراء الذي يجب اتخاذه. ضمّن سياقاً ذا صلة مثل معرفات المستخدم، ومعرفات الطلب، والطوابع الزمنية. تجنّب رسائل عامة مثل 'حدث خطأ' - بدلاً من ذلك قل 'فشل جلب ملف تعريف المستخدم للمستخدم ID 123: مهلة الاتصال بعد 30 ثانية'.

تفاصيل المطور

بنية الملفات