الاستثناءات داخل المستودعات: كيف تتعامل معها؟

StackOverflow https://stackoverflow.com/questions/894668

  •  23-08-2019
  •  | 
  •  

سؤال

من السهل أنني مهتم بالحصول على أفكارك حول:

مع تطبيقات مستودعك، هل ترغب في إلقاء الاستثناءات داخل المستودع وترك التعامل مع الاستثناء إلى المتصل، أو هل تفضل التقاط الاستثناءات داخل مستودعك، تخزين الاستثناء وإرجاع FALSE / NULL؟

هل كانت مفيدة؟

المحلول

هذا يعتمد.

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

أنا أيضا سجل الاستثناءات. يمكنني استخدام log4net للمساعدة في هذا. لكنني أحب تسجيل استثناءات في المصدر. سأسمح لهم بالفقاعة من هناك.

العودة فارغة؟ إذا كان هناك شيء لا يمكن العثور عليه (أي يبحث عن شيء حسب المعرف وليس هناك)، ثم أعود فارغة، وليس استثناء. ولكن هناك حالات يمكن أن أرى فيها إلقاء استثناء جديد عند حدوث ذلك.

النقطة الرئيسية: يجب أن تكون الاستثناءات "استثنائية"، وليس القاعدة. إذا تم إلقاء استثناء، فيجب أن يكون الأمر لأن هناك خطأ ما في الحقيقة وتحتاج إلى إصلاحه.

نصائح أخرى

عادة ما أترك الاستثناءات تسرب، على الرغم من أنني إذا كنت في مزاج مشترك للغاية، فسوف ألغيتها في RepositoryException لإبقاء العملاء من رعاية محرك التخزين الأساسي.

لن أعود أبدا FALSE / NULL بدلا من استثناء، حيث يوجد بالفعل معنى وراء هذه القيم.

في حالات نادرة، يمكن أن يكون لديك محرك تخزين ميت في الدماغ ينشئ استثناءات في الحالات غير الاستثنائية - وأود أن ألقي هذه العناصر المحددة والعودة فارغة إذا كان ذلك مناسبا (على سبيل المثال، إذا كان الصف غير موجود، لكن محرك التخزين يلقي خطأ في هذه الحالة - كنت أمسك بها وإعادة null).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top