سؤال

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

أستخدم حاليًا عملية أقوم من خلالها بالإبلاغ عن الأخطاء إلى وظيفة لتمرير رقم الخطأ ورمز الخطورة ومعلومات الموقع وسلسلة المعلومات الإضافية.تُرجع هذه الدالة قيمة منطقية صحيحة إذا كان الخطأ فادحًا ويجب أن يتوقف التطبيق، وترجع خطأً إذا لم يكن الأمر كذلك.كجزء من عمليتها، وبصرف النظر عن التعليقات المرئية للمستخدم، تقوم الوظيفة أيضًا بتسجيل أخطاء في الملف أعلى من مستوى الخطورة.

يقوم رقم الخطأ بفهرسة مجموعة من السلاسل التي تشرح نوع الخطأ، على سبيل المثال: "الوصول إلى الملف"، "إدخال المستخدم"، "إنشاء سلسلة محادثات"، "الوصول إلى الشبكة"، وما إلى ذلك.رمز الخطورة ثنائي أو 0,1,2 أو 4، 0=معلوماتي، 1=user_retry، 2=cannot_complete، 4=cannot_continue.معلومات الموقع هي الوحدة النمطية والوظيفة، والمعلومات الإضافية هي قيم المعلمات والمتغيرات المحلية.

أريد تحويل هذا إلى طريقة قياسية لمعالجة الأخطاء بحيث يمكنني وضعها في مكتبة وإعادة استخدامها في جميع تطبيقاتي.أستخدم C/C++ بشكل أساسي على Linux، ولكني أرغب في استخدام المكتبة الناتجة مع اللغات/الأنظمة الأساسية الأخرى أيضًا.

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

  • أو:هل يجب أن يكون هذا الامتداد عبارة عن خيار فرعي للخيارات التي يحتاج المستخدم إلى اختيارها من؟المشكلة في ذلك هي أن الخيارات ستكون للضرورة خيارات متعلقة بالبرمجة والتي قد تبرز تمامًا مستخدمًا نهائيًا.

  • أو:إذا كان كل تطبيق يستخدم تمريرة روتينية LIB على طول صفيفها من الأخطاء أو السلوكيات الافتراضية - ولكن هذا سيهزم الغرض من المكتبة ...

  • أو:هل يجب التعامل مع مستويات الشدة في كل تطبيق؟

أو:ماذا تقترح؟كيف تتعامل مع الأخطاء؟كيف يمكنني تحسين هذا؟

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

المحلول

تعتمد كيفية التعامل مع الأخطاء حقًا على التطبيق. يحتوي تطبيق الويب على آلية مختلفة لالتقاط الأخطاء عن تطبيق سطح المكتب، وكلاهما يختلفان بشكل كبير عن نظام المراسلة غير المتزامن.

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

أنا أحب مستويات الشدة.ربما يمكنك الحصول على مكتبة تجميع الأخطاء القابلة للتوصيل مع موفري إخراج الأخطاء المختلفين وموفر مستوى الخطورة.

يمكن لموفري المخرجات تضمين أشياء مثل logginProvider وIgnoreErrorsProvider.من المحتمل أن يكون مقدمو الخطورة شيئًا يتم تنفيذه بواسطة كل مشروع نظرًا لأن مستويات الخطورة يتم تحديدها عادةً حسب نوع المشروع الذي يحدث فيه.(على سبيل المثال، تعد مشكلات الاتصال بالشبكة أكثر خطورة بالنسبة لتطبيق مصرفي منها بالنسبة لنظام إدارة جهات الاتصال).

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