का उपयोग करके कोई अपवाद नहीं मिला है मेरे पास जावा लाइब्रेरी है जो कार्यों की एक श्रृंखला चलाती है।जावा UncaughtExceptionHandler को जेएनआई
Thread.setDefaultUncaughtExceptionHandler(new JavaUncaughtExceptionHandler());
UncaughtExceptionHandler UncaughtExceptionHandler
लागू करता है और केवल STDERR
में त्रुटि जानकारी लॉग इन करें: और मैं एक डिफ़ॉल्ट न आया हुआ अपवाद हैंडलर का उपयोग कर दर्ज किया।
मेरी जावा लाइब्रेरी को सी ++ कोड से जेएनआई के माध्यम से बुलाया जाता है, और जेएनआई इसे ExceptionCheck()
के साथ बुला रहा है और त्रुटि को C++ में FATAL के रूप में लॉग करता है।
समस्या है:
क्रम में, जब वहाँ एक RuntimeException
(या किसी अन्य न आया हुआ अपवाद) मेरी जावा कोड, त्रुटि सी में कब्जा कर ली ++ में होता है मेरी JavaUncaughtExceptionHandler
धागा डिफ़ॉल्ट ध्यान में न आया अपवाद संचालक के रूप में पंजीकृत करने के बजाय ।
- क्या यह छोड़कर व्यवहार है?
DefaultUncaughtExceptionHandler
वास्तव में कब कॉल किया जाएगा? थ्रेड बंद होने से पहले मुझे पता है, लेकिन जब विशेष रूप से जेएनआई मामले में। क्या इसे सी ++ पर वापस आने से पहले या सी ++ कोड के बाद भी समाप्त किया जाता है)। मुझे लगता है कि यह जेएनआई में थ्रेड प्रबंधन से संबंधित है, कृपया किसी भी संबंधित जानकारी को साझा करें।- वहाँ वैसे भी मैं अपने जावा कोड में सभी अपवाद (एक
try
/catch
ब्लॉक डाल को छोड़कर अन्य वैकल्पिक तरीका)
धन्यवाद इतना पकड़ कर सकते हैं है।
जेम्स, आपकी स्पष्टीकरण के लिए बहुत बहुत धन्यवाद, काफी उपयोगी। हम jenv.checkException (...) विधि का उपयोग कर जावा विधि का आह्वान करते हैं, और अपवाद C++ में कैप्चर किया जाता है। तो मुझे लगता है कि कोड चलाने के लिए सुरक्षित है, लेकिन हम सिर्फ सी के बजाए जावा में सभी अपवाद लॉग करना चाहते हैं। हालांकि, ऐसा लगता है कि इसे UncaughtExceptionHandler द्वारा हासिल नहीं किया जा सकता है। – user788767