2009-06-24 14 views
10

हाय
क्या डब्ल्यूपीएफ आवेदन में सभी त्रुटियों के अपवाद और दुर्घटनाओं को संभालने का कोई तरीका है? मुझे डिस्पैटर अनहैंडले एक्सेप्शन पता है, लेकिन यह यूआई थ्रेड में केवल अपवादों को संभालता है, है ना? क्या अन्य धागे में सभी अपवादों को पकड़ने और लॉग करने का कोई तरीका है? और बाध्यकारी त्रुटियां भी? आप अपने उद्यम प्रणाली में इस तरह की आवश्यकता को कैसे लागू करते हैं?डब्ल्यूपीएफ आवेदन में सभी अपवादों को संभालने का सबसे अच्छा अभ्यास क्या है?

उत्तर

3

ध्यान रखें, कि माइक्रोसॉफ्ट सभी अपवादों को पकड़ने की सिफारिश नहीं करता, बल्कि वे केवल अपवाद क्या आप जानते हैं पकड़ने के (या कुछ जगह में होने की अपेक्षा) करने के लिए सलाह देते हैं। यदि आप "माइक्रोसॉफ्ट [विंडोज़ | विस्टा] के लिए प्रमाणित" लोगो प्राप्त करना चाहते हैं तो और भी अधिक, आपको अज्ञात अपवाद नहीं लेना चाहिए, और ऐसे अपवाद Wer पर जाना चाहिए।

  1. जगह Application.Run()try में ... catch
  2. DispatcherUnhandledException
  3. AppDomain.CurrentDomain.UnhandledException

या तो मामले में आप एक कृपया-forgive- प्रदर्शित करना चाहिए:

+4

मैं सहमत हूं, हालांकि यदि आप सभी अपवादों को पकड़ते हैं तो इसे केवल लॉग इन करने के लिए करें, ताकि आप सामान्य त्रुटियां पा सकें और उन्हें सही कर सकें। फिर एक अपवाद फिर से फेंक दें। – khebbie

+6

मेरा मानना ​​है कि आपके द्वारा उल्लिखित माइक्रोसॉफ्ट सलाह सभी अपवादों को पकड़ने के लिए नहीं है, यानी कोशिश ब्लॉक से अपवाद पकड़ो। हालांकि ओपी बेकार अपवादों को संभालने के लिए एक समाधान मांग रहा है ताकि आप दुर्घटना के उपयोगकर्ता को सूचित करके और अपने विकास/क्यूए टीम को एक क्रैश रिपोर्ट ई-मेल भेजकर स्थिति को संभाला जा सके। – Dennis

+1

नहीं, माइक्रोसॉफ्ट सलाह बिल्कुल सभी अनचाहे अपवादों को पकड़ने के बारे में है।मुख्य विचार यह है कि ओएस सभी जानकारी एकत्र करेगा और एमएस को रिपोर्ट भेज देगा, इसलिए एमएस में समस्या ऐप्स के बारे में सभी आंकड़े होंगे, और डेवलपर फिर एमएस से Winqual हालांकि यह रिपोर्ट ले सकता है। लेकिन निश्चित रूप से अज्ञात अपवाद के बारे में कुछ लॉगिंग करना और फिर उल्लेख किया गया कि खेबेबी का उल्लेख भी किया गया है। – arbiter

10
AppDomain.CurrentDomain.UnhandledException 

वर्तमान धागे के लिए किसी भी अनचाहे अपवाद को पकड़ लेंगे। इस तरह हम इसे अपने आवेदन में संभालते हैं।

बाइंडिंगरर हमेशा आउटपुट विंडो में संभाले जाते हैं और लॉग इन होते हैं। रिलीज से पहले हम बाध्यकारी त्रुटियों के लिए आउटपुट विंडो की जांच करते हैं और जितना हम कर सकते हैं ठीक कर सकते हैं।

हालांकि यह मेरी राय है कि आप बाध्यकारी त्रुटियों को अनचाहे के रूप में नहीं मानना ​​चाहेंगे क्योंकि वे अधिकतर पुनर्प्राप्त करने योग्य होते हैं और प्रत्येक रिलीज से पहले आप जितना संभव हो उतना तय कर सकते हैं। आप विजुअल स्टूडियो में डीबग> निष्पादन को और अधिक विशिष्ट जानकारी प्राप्त करने के लिए बाध्यकारी विफलता फेंकने के लिए बदल सकते हैं।

HTH,

डेनिस

+0

ईवेंट हैंडलर ऐसी है कि यहां तक ​​कि जल्द से जल्द त्रुटियों का पता किया जा सकता है परिभाषित करने के लिए सबसे अच्छी जगह कहां है? –

+0

आप एप्लिकेशन एंट्री पॉइंट में ईवेंट पंजीकृत कर सकते हैं। विवरण के लिए http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx देखें क्योंकि कुछ चीजें जिन्हें आपको समझने की आवश्यकता है। – Dennis

4

हाँ, वहाँ 3 स्थानों रहे हैं मुझे संदेश और एक त्रुटि रिपोर्ट भेजने का सुझाव है।

आपके सर्वर पर सेवा को 'त्रुटि रिपोर्ट सबमिट करने के लिए धन्यवाद' या 'अगले संस्करण में समस्या पहले ही तय होनी चाहिए। कृपया अद्यतन '

+3

मुझे नहीं लगता था कि 'एप्लिकेशन। रुन() 'WPF ऐप्स में मौजूद था। – Pat

+0

सभी जगहों को सूचीबद्ध करने के लिए अच्छा बिंदु। लेकिन सुनिश्चित करें कि वे सभी सही हैं। –

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

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