मेरे पास एक एमएफसी एप्लीकेशन/क्लियर के साथ संकलित है और मैं अन्यथा अनचाहे प्रबंधित अपवादों के लिए अंतिम हैंडलर को कार्यान्वित करने की कोशिश कर रहा हूं। देशी अपवादों के लिए, ओवरराइडिंग CWinApp::ProcessWndProcException
काम करता है।मिश्रित देशी/प्रबंधित निष्पादन योग्य में अंतिम प्रबंधित अपवाद हैंडलर?
जेफ के CodeProject article, Application.ThreadException
और AppDomain.CurrentDomain.UnhandledException
में सुझाए गए दो कार्यक्रमों को उठाया नहीं गया है।
कोई मिश्रित निष्पादन योग्य के लिए अंतिम प्रबंधित अपवाद हैंडलर प्रदान करने का कोई तरीका सुझा सकता है?
अद्यतन:
ऐसा लगता है कि इन अपवाद संचालकों केवल नीचे की ओर का ट्रिगर कर रहे हैं Application.Run
या इसी तरह की (। वहाँ एक कार्यकर्ता धागा स्वाद है, नाम याद नहीं है) यदि आप चाहते हैं सही मायने में विश्व स्तर पर पकड़ने के लिए एक प्रबंधित अपवाद आपको एक एसईएच फ़िल्टर स्थापित करने की आवश्यकता है। आपको System.Exception
नहीं मिल रहा है और यदि आप कॉलस्टैक चाहते हैं तो आपको अपना वॉकर रोल करना होगा।
इस विषय पर एक एमएसडीएन मंच प्रश्न में इसे try ... catch (Exception^)
में मुख्य एमएफसी थ्रेड के पर्याप्त निम्न-स्तर बिंदु को ओवरराइड करने का सुझाव दिया गया था। उदाहरण के लिए, CWinApp::Run
। यह एक अच्छा समाधान हो सकता है लेकिन मैंने किसी भी perf या स्थिरता प्रभाव को नहीं देखा है। आपको जमानत से पहले कॉल स्टैक से लॉग इन करने का मौका मिलेगा और आप डिफॉल्ट विंडोज़ अनचाहे अपवाद व्यवहार से बच सकते हैं।
शायद यह उन अपवादों के बारे में अधिक जानने में हमारी सहायता करेगा जो आपके द्वारा उल्लिखित दो घटनाओं द्वारा पकड़े नहीं गए हैं? – Charlie
किसी भी प्रबंधित अपवाद - सिस्टम :: अपवाद के किसी भी उत्तराधिकारी। उपर्युक्त घटनाओं का बिंदु आग लगाना है जब/कोई/प्रबंधित अपवाद बेकार है। –