मुझे एक दुर्व्यवहार लाइब्रेरी के साथ परेशानी हो रही है जो एक अंतिमकर्ता में अपवाद फेंकता है, जो निश्चित रूप से एप्लिकेशन को दुर्घटनाग्रस्त करता है।क्या मैं एप्लिकेशन को बंद करने से किसी अन्य ऐपडोमेन में एक अपरिचित अपवाद को रोक सकता हूं?
इससे बचने के लिए, मैंने लाइब्रेरी को अपने ऐपडोमेन में लोड करने का प्रयास किया, लेकिन अपवाद अभी भी सतह पर बुलबुले और एप्लिकेशन को क्रैश करता है।
एमएसडीएन पर प्रलेखित के रूप में, AppDomain.UnhandledException
पर पंजीकरण करने से अपवाद को रोकने से रोका नहीं जाता है, लेकिन मुझे आश्चर्य है कि "उप ऐपडोमेन" में इस तरह के अपवाद को पकड़ने का कोई और तरीका नहीं है।
प्लगइन होस्ट या एप्लिकेशन जो ऐप्पडोमेन्स का उपयोग सैंडबॉक्स संभावित रूप से हानिकारक कोड में करते हैं, अनचाहे अपवादों को रोकने के लिए करते हैं? क्या यह वास्तव में संभव है?
नोट: मेरे पास पहले से ही एक और कामकाज है, जिसने here का वर्णन किया है। खराब फ़ाइनलाइज़र एक लंबे समय तक जीवित वस्तु पर है, जो कि शट डाउन के दौरान ही एकत्र किया जाता है, इसलिए उपयोगकर्ता से इस "बोगस" त्रुटि को छिपाने के लिए पर्याप्त है। फिर भी, मुझे यह कामकाज भंगुर लगता है, क्योंकि यह ऑब्जेक्ट पहले एकत्र किए जाने पर अन्य अनुप्रयोगों को वास्तविक, वास्तविक त्रुटियों या जोखिम को छुपाएगा।
आप अपवाद को क्यों नहीं पकड़ सकते – rerun
अपवाद को फाइनेंजर में फेंक दिया गया है, जो सीएलआर द्वारा प्रबंधित अपने स्वयं के धागे में चलाया जाता है, इसलिए मैं थ्रेड पर अपवाद हैंडलर नहीं डाल सकता। साथ ही, यह "विरासत, अनैच्छिक और महत्वपूर्ण घटक के साथ कोई स्रोत कोड उपलब्ध नहीं है" की एक लाइब्रेरी है ... –