جافا: عرض تعطل في واجهة المستخدم الرسومية ، ولكن قمع التحذيرات

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

  •  25-09-2019
  •  | 
  •  

سؤال

بالنسبة لتطبيقات سطح المكتب ، من المفيد رؤية StackTrace على واجهة المستخدم الرسومية عند تعطل البرنامج. لقد قمت بتطبيق هذا في Java عن طريق استبدال System.err مع معالج الأخطاء الخاص بي ، والذي يعيد توجيه جميع رسائل الخطأ إلى مكون واجهة المستخدم الرسومية وملف نصي.

المشكلة: لا تكتب عدد قليل من المكتبات الموجودة (على سبيل المثال Apache POI) إلى النظام. عند حدوث تحطم ، فإنها تخرج أيضًا رسائل تحذير بسيطة. هذا يتسبب في ظهور نافذة تحطم النار دون داع. لذا فإن سؤالي هو ، هل يعرف أي شخص كيفية (1) إظهار StackTrace عندما يتعطل البرنامج ، بينما (2) لا يعرضه في حالة رسائل تحذير؟

تحرير] واجهة المستخدم الرسومية مكتوبة في SWT.

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

المحلول

يمكنك تثبيت معالجات الاستثناء الخاصة. تم شرح تقنية واحدة للتأرجح هنا: http://ruben42. إريك بيرك لديه أيضا مقالة لطيفة حول هذا الموضوع. تقنية عامة أخرى تستخدم Thread.setDefaultUncaughtExceptionHandler, ، وهو ما يسمى عندما يموت مؤشر الترابط بسبب الاستثناء (وفقًا للتعليقات في المقالة الأولى المشار إليها ، لا يموت سلسلة Swing ، لذا فإن تعيين معالج الاستثناء غير المرغوب فيه لا يعمل مع Swing ، لكن مقالة Eric تستخدم هذه التقنية).

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

نصائح أخرى

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

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

للقبض على أي استثناءات متبقية لم يتم التحقق منها ، يمكنك أن تفعل شيئًا كهذا: http://www.javaspecialists.eu/archive/issue081.html, للتأكد من أنك تحصل على هؤلاء.

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