5

मेरे पास एक सार्वभौमिक WinRT ऐप है और मैं वैश्विक अपवाद हैंडलिंग को लागू करने की कोशिश कर रहा हूं, इसलिए मैं उपयोगकर्ता को मुझे एकत्रित अतिरिक्त डायग्नोस्टिक जानकारी के साथ एक रिपोर्ट भेजने के लिए कह सकता हूं। (अतिरिक्त नैदानिक ​​जानकारी है कि मैं अंतर्निहित हैंडलर का उपयोग नहीं कर सकता जो देव पोर्टल पर लॉग अप करेगा)।सार्वभौमिक WinRT ऐप में AppBarButton अपवाद अनचाहे अपवाद ईवेंट को ट्रिगर नहीं करता

public App() { 
    InitializeComponent(); 
    UnhandledException += OnUnhandledException; 
    // other stuff 
} 

private void OnUnhandledException(object sender, UnhandledExceptionEventArgs e) { 
    try { 
     //handler 
    } 
    catch { } 
    throw e.Exception; 
} 

जब मैं अपने प्रारंभिक XAML पेज में एक अपवाद (पेज मेरी साइन इन) बल, ई:

मैं निम्नलिखित कोड है। जी। हार्ड कोड

throw new FileNotFoundException(); 

तो मेरा हैंडलर अपेक्षित रूप से ट्रिगर किया गया है। हालांकि, अगर मैं इसे अपने मुख्य हब पेज में करता हूं, जो मेरा प्रारंभ पृष्ठ नेविगेट करता है, तो ऐसा लगता है कि मेरा हैंडलर नहीं चलता है। मैं डीबगर में फेंक दिया अपवाद देख सकता हूं, लेकिन यह कहीं कहीं निगल जाता है। मुझे पता नहीं चल सकता है। मुझे जिक्र करना चाहिए कि ऐप खुशी से इस बिंदु पर जारी है - यह क्रैश नहीं होता है।

मैं निर्मित ओवरराइड निष्क्रिय करने के लिए मेरी Project Properties में DISABLE_XAML_GENERATED_BINDING_DEBUG_OUTPUT और DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION निर्धारित किया है, और जहाँ तक मुझे पता है कि वहाँ कोई async void स्थिति यहाँ है (उदाहरण के लिए Unhandled exception handler not called for Metro/WinRT UI async void event handler - हालांकि से मैं क्या पढ़ा है, इस मुद्दे को उस तरह का है किसी भी घटना में 8.1 में हल किया गया)। लेकिन कुछ प्रकार की छुपी एसिंक शून्य चीज हो सकती है जिस पर मैं नहीं देख रहा हूं।

मुझे यकीन है कि मुझे कुछ बेवकूफ याद आ रही है। यह क्या है?

(EDIT) ऐसा प्रतीत होता है कि यह एक मुद्दा है जब अपवाद AppBarButton बटन ईवेंट विशेष रूप से होता है।

(संपादित करें 2) कुछ हद तक न्यूनतम रेपो यहां है: http://1drv.ms/1rSNq3i - इसे 8.1 एमुलेटर में या 8.1 फोन पर चलाएं, बटन टैप करें, कमांडबार खोलें और sign out चुनें - इससे अपवाद और हैंडलर ट्रिगर करना चाहिए, लेकिन अपवाद खो गया है। यदि आप कोड को उसी पृष्ठ (एक मानक बटन) में एक बटन पर ले जाते हैं, तो हैंडलर आग लगती है।

(संपादित करें 3) मैं एक न्यूनतम रास्ते में डिस्पैचर उपयोग करने की कोशिश, और यह दिखाई परिणाम नहीं बदला:

private void SignOutAppBarButton_Click(object sender, RoutedEventArgs e) { 
    Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() => { 
     throw new FileNotFoundException(); 
    }).AsTask().Wait(); 
} 
+0

क्या आप एक छोटी रेपो परियोजना साझा कर सकते हैं? फोन और पीसी दोनों पर समस्या है? –

+0

मैंने अभी तक पीसी संस्करण नहीं लिखा है। मैं एक स्वच्छ परियोजना पर पुन: पेश करने की कोशिश करूंगा। –

+0

कुछ अपवाद मूल अपवाद हैं और प्रबंधित कोड द्वारा पकड़े नहीं जाते हैं। आप दुर्भाग्य से इन अपवादों को संभाल नहीं सकते हैं। यदि आपके पास एक संलग्न है तो वे आपके प्रबंधित डीबगर को भी क्रैश करेंगे। –

उत्तर

0

UnhandledException घटना आप Frame.NavigationFailed संभालने की ज़रूरत है के अलावा। एक पेज कन्स्ट्रक्टर में एक अपवाद NavigationFailed फायरिंग में परिणाम।

संबंधित मुद्दे