मैंने एक .NET 4 सॉफ्टवेयर विकसित किया है और मैं इसे बीटा उपयोगकर्ताओं को भेजने के लिए तैयार हूं। यदि सॉफ़्टवेयर में एक अनचाहे अपवाद फेंक दिया गया है, तो मैं इसे पकड़ना, लॉग इन करना और लॉग भेजना चाहता हूं। मैंने पहले से ही इस कार्यक्षमता को कार्यान्वित कर दिया है और जब मैं इसे विजुअल स्टूडियो के साथ डीबग मोड में चलाता हूं तो यह ठीक चल रहा है। हालांकि, जब मैंने सॉफ़्टवेयर का रिलीज़ संस्करण बनाया है और इसे इंस्टॉल किया है, तो माइक्रोसॉफ्ट .NET Framework मेरे कोड से पहले अपवाद पकड़ना शुरू कर देता है। मुझे एक त्रुटि संदेश वाला पॉपअप मिलता है: "आपके एप्लिकेशन में किसी घटक में अनचाहे अपवाद हुआ है। यदि आप जारी रखें क्लिक करते हैं, तो एप्लिकेशन इस त्रुटि को अनदेखा कर देगा और जारी रखने का प्रयास करेगा।".NET Framework अपवाद हैंडलिंग को अक्षम कैसे करें और इसके बजाय अपना स्वयं का उपयोग करें?
क्रैशिंग का परीक्षण करने के लिए, मैंने एक क्रैश डाउन बटन बनाया जो अपवाद फेंकता है। यह क्रैश स्वयं लॉग करता है और अपवाद हैंडलर लॉग सभी को अनचाहे अपवाद प्राप्त करता है। जब मैं रिलीज़ संस्करण के लॉग को देखता हूं, तो मैं केवल क्रैश डाउन से लॉग संदेश देख सकता हूं लेकिन अपवाद हैंडलर से नहीं।
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
वहाँ .NET फ्रेमवर्क के पकड़ने अपवाद निष्क्रिय करने के लिए कोई रास्ता है या अपने ही अपवाद संचालक संलग्न करने के लिए एक बेहतर तरीका है:
मैं इस कोड के साथ अपने ही अपवाद संचालक संलग्न किया है?
अद्यतन: मैं WPF का उपयोग कर रहा हूं। मैं DispatcherUnhandledException में देखूंगा और आपको यह बता दूंगा कि क्या यह समस्या हल करता है।
अद्यतन # 2: दुर्भाग्य से आवेदन करने के लिए हैंडलर जोड़ना। वर्तमान। डिस्पैटर अननहेल्ड अपवाद ने समस्या का समाधान नहीं किया। स्पष्ट रूप से यह डीबगिंग पॉपअप जेआईटी (जस्ट-इन-टाइम) डीबगर द्वारा बनाया गया है जो विजुअल स्टूडियो के साथ शामिल है। मुझे सॉफ़्टवेयर का परीक्षण "नागरिक" विंडोज के साथ करना होगा और देखें कि अपवाद भी वहां पहुंचे हैं या नहीं।
अद्यतन # 3: किसी कारण दृश्य स्टूडियो काम करता है लेकिन रिलीज MSBuild स्क्रिप्ट और Dotfuscator के साथ बनाया के साथ बनाया गया जारी नहीं करता है के लिए।
डब्ल्यूपीएफ/सिल्वरलाइट में, सेट को जारी रखने से अपवाद को रोकने के लिए e.Handled = true सेट करें। – Josh
मैं अभी तक समस्या को हल करने में सक्षम नहीं हूं। जब मैं करता हूं तो मैं यहां एक उत्तर पोस्ट करूंगा। –