2010-09-22 13 views
5

मैं .NET एक्सेल एडिन के लिए एक अनचाहे अपवाद हैंडलर संलग्न करने की कोशिश कर रहा हूं। समस्या अपवाद हैंडलर कभी नहीं कहा जाता है।.NET एक्सेल एडिन (एक्सएलएल) में अनचाहे अपवादों को फँसाना?

AppDomain.CurrentDomain.UnhandledException काम नहीं करता - कभी भी घटना को नहीं चलाता।

आवेदन। वर्तमान। डिस्पैचर अननहेल्ड अपवाद का उपयोग नहीं किया जा सकता क्योंकि एप्लिकेशन एक्सेल एडिन कोड में शून्य है।

फिर आप एक अनचाहे अपवाद हैंडलर को कैसे तार करते हैं?

+0

एक एक्सएलएल एक पुरानी स्टाइल ऐड-इन है जो अप्रबंधित कोड पर आधारित है। हां, अनचाहे अपवाद तब आवश्यक नहीं होगा जब अप्रबंधित कोड उड़ाए। एक्सेल पहले कदम होगा। –

+0

लेकिन यह अप्रबंधित कोड नहीं है जो उड़ाता है .. यह एडिन के भीतर .NET कोड है जो अपवाद फेंकता है। वह कहीं भी फंस क्यों नहीं जा सकता? – Pradeep

+0

यह किस प्रकार का ऐड-इन है? क्या यह एक 'IDTExtensibility2'- आधारित ऐड-इन है या इसे VS 2005/2008/2010 में प्रोजेक्ट टेम्पलेट्स में से किसी एक का उपयोग करके VSTO (Office के लिए विजुअल स्टूडियो टूल्स) का उपयोग करके बनाया गया था? एक्सएलएल एड-इन्स सख्ती से * अप्रबंधित * हैं इसलिए यह आपके द्वारा चलाए जा रहे ऐड-इन का प्रकार नहीं हो सकता है। –

उत्तर

3

हो सकता है कि आप ऐसा करने में सक्षम न हों, क्योंकि एप्लिकेशन वास्तव में एक अप्रबंधित एप्लिकेशन है। आपको बस फ्लैकी क्षेत्रों के चारों ओर ब्लॉक/कोशिश ब्लॉक करना पड़ सकता है।

+4

सही। चूंकि एक्सेल कॉलर है, इसलिए एक्सेप्शन को संभालने के लिए एक्सेल तक है या नहीं। यदि एक्सेल हैंडल है, तो कोई अनचाहे अपवाद नहीं है। यदि एक्सेल इसे संभाल नहीं करता है, तो Excel क्रैश हो जाता है। यह इत्ना आसान है। किसी भी तरह से, प्रबंधित कोड निष्पादन COM इंटरऑप बाधा पर समाप्त होता है। कुंजी सभी "flaky क्षेत्रों" को घेरने के लिए बहुत कुछ नहीं है, लेकिन सभी प्रविष्टि बिंदुओं के आसपास त्रुटि प्रबंधन का उपयोग करने के लिए जहां एक्सेल आपका कोड कॉल करता है। –

+0

केवल समस्या यह है कि यदि आप पृष्ठभूमि धागे, और Async पुस्तकालयों का उपयोग करते हैं। एक सुंदर दृष्टि नहीं है! –

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