كيف يمكنني التعامل مع الاستثناءات المحددة وغير المحددة في طريقة Java ConfigBean لعرض سبب سهل الاستخدام للخطأ؟[ينسخ]

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

سؤال

أقوم بتطوير تطبيق سطر أوامر صغير يعتمد على نظام التشغيل الربيعي.تحتوي الفئة الرئيسية على حقل @Autowired-annotated @Autowired Repository repository; يتم توفير وصفة البناء الخاصة به في فئة Java Config التي تحتوي على طريقة @Bean-annotated المناسبة @Bean Repository repository(){...}.

تحتوي الطريقة @Bean-annotated على تعليمات برمجية يمكنها طرح استثناءات محددة وغير محددة.@Bean Repository repository(){...//exceptions}

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

حاليًا، هناك استثناء في طريقة Java Config @Bean-annotated يتسبب في خروج التطبيق باستخدام o.s.boot.SpringApplication: Application startup failed رسالة وتتبع مكدس طويل جدًا.

أتساءل عما إذا كانت هناك طريقة جيدة للتعامل مع الاستثناءات النموذجية على الأقل (التي أعرفها) في طريقة Java Config @Bean-annotated لتسجيل الرسائل المختصرة سهلة الاستخدام والمفيدة لاستكشاف الأخطاء وإصلاحها.

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

شكرًا لك.

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

المحلول

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

يتمثل أحد الخيارات في إجراء كافة عمليات التحقق من صحة الإدخال قبل الاتصال SpringApplication.run().قد ينجح هذا مع أي وسائط سطر أوامر، ولكنه قد يكون مرهقًا في أحسن الأحوال لأي شيء تم تكوينه عبره application.properties.

بدلا من رمي استثناءات من الخاص بك @Bean الأساليب، يمكنك القبض عليهم والتعامل معهم بشكل مناسب.إذا كانت المشكلة بسيطة، فيمكنك تسجيل معلومات أو رسالة تحذير تشرح المشكلة وتسمح للتطبيق بالاستمرار.إذا كانت المشكلة كارثية، فيمكنك تسجيل رسالة خطأ ثم الاتصال System.exit().في حين أن هذا سيوفر تقارير سهلة الاستخدام عن الأخطاء لأية استثناءات يتم طرحها أثناء @Bean يتم استدعاء الأساليب، سيظل لديك تتبعات المكدس لأية استثناءات تحدث بعد ذلك.

وأخيرًا، يمكنك إنهاء المكالمة إلى SpringApplication.run() في كتلة محاولة الالتقاط.يمكنك بعد ذلك فحص الاستثناء الذي تم اكتشافه وسلسلة الأسباب لتحديد رسالة الخطأ المناسبة لتسجيل الدخول.تتمثل ميزة هذا الأسلوب في أنه سيتيح لك تقديم رسالة خطأ سهلة الاستخدام لأي استثناء يسبب SpringApplication.run() أن تفشل، وليس مجرد فشل يتم إلقاؤه من داخل أحد أفراد أسرتك @Bean طُرق.

بافتراض وجود وسيطات سطر أوامر للتحقق من صحتها، ربما سأستخدم مزيجًا من الخيارين الأول والثالث.لأول مرة سأستخدم مكتبة CLI مثل JOpt Simple لجعل الأمور أسهل قليلاً.

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