كيفية التعامل مع خطأ المقبس أثناء روتين تسجيل الدخول

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

  •  26-09-2019
  •  | 
  •  

سؤال

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

سؤالي ، هو ما أفعله ، إذا كان ذلك أثناء استدعاء مستخدم إلى وظيفة تسجيل الدخول ، يلقي المقبس بالفعل استثناء.

مثال - يقوم المستخدم النهائي باستدعاء وظيفة تسجيل الدخول ، وبينما تنتظر وظيفة تسجيل الدخول أن تنتهي الطلبات الحالية بأمان ، يلقي المقبس استثناء في مؤشر ترابط القراءة.

لدي خياران كما أراه -

  1. التظاهر بأن الخطأ لم يحدث ، ويتصرف فقط مثل المقبس الذي تم فصله كجزء من تسجيل الخروج لدينا.

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

أيضًا ، مرتبط قليلاً - ما الذي سأفعله إذا بدأ الخادم إيقافًا لم يتم طلبه (أي .. يعود استدعاء القراءة الفارغ) .. لا يحب. هل أعامل هذا استثناء في حد ذاته؟

لقد وجدت أن قطع الاتصال/تسجيله بالكامل من مكتبتي ليكون شوكة رئيسية في جانبي. لا يمكنني أن ألف رأسي حوله. هل يعرف أي شخص أي تطبيقات رمز مفتوح المصدر تعالج هذا الموقف بشكل جميل؟

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

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

المحلول

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

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

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