एएसपी.NET 1.1 प्रोजेक्ट्स पर काम करते समय मैंने हमेशा सभी त्रुटियों को पकड़ने के लिए ग्लोबल.एक्सएक्स का उपयोग किया। मैं एक विंडोज़ फॉर्म उपयोगकर्ता नियंत्रण में सभी अपवादों को पकड़ने के लिए एक समान तरीके की तलाश में हूं, जो एक होस्टेड आईई नियंत्रण होने के समाप्त होता है। ऐसा कुछ करने के बारे में जाने का उचित तरीका क्या है?Winforms नियंत्रण के लिए ग्लोबल अपवाद हैंडलिंग
उत्तर
आपको विंडोज फॉर्म के लिए System.Windows.Forms.Application.ThreadException
ईवेंट को संभालने की आवश्यकता है। इस लेख ने वास्तव में मेरी मदद की: http://bytes.com/forum/thread236199.html।
यदि आप वीबी.नेट का उपयोग कर रहे हैं, तो आप बहुत सुविधाजनक ApplicationEvents.vb में टैप कर सकते हैं। यह फ़ाइल एक VB.NET WinForms प्रोजेक्ट के साथ मुफ्त में आती है और unhandled exceptions को संभालने के लिए एक विधि शामिल है।
इस गंधा फाइल करने के लिए पाने के लिए, यह "प्रोजेक्ट गुण >> आवेदन >> आवेदन घटनाक्रम"
आप VB.NET का उपयोग नहीं कर रहे हैं, तो हाँ, यह Application.ThreadException से निपटने है।
Application.ThreadException
के लिए संचालकों है, जैसा कि ऊपर मेरी WinForms अनुप्रयोग में
, लेकिन यह भी AppDomain.CurrentDomain.UnhandledException
अधिकांश अपवाद ThreadException
हैंडलर के माध्यम से आने, लेकिन AppDomain एक भी मेरे अनुभव
एमएसडीएन से नमूना कोड दिखाता है कि दोनों प्रकार के अनचाहे अपवादों को कैसे पकड़ें: [msdn] (http://msdn.microsoft.com/en-us/library/system.windows.forms.application.threadexception.aspx) –
संहिता में कुछ पकड़ा गया MSDN से: http://msdn.microsoft.com/en-us/library/system.appdomain.unhandledexception.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2
Sub Main()
Dim currentDomain As AppDomain = AppDomain.CurrentDomain
AddHandler currentDomain.UnhandledException, AddressOf MyHandler
Try
Throw New Exception("1")
Catch e As Exception
Console.WriteLine("Catch clause caught : " + e.Message)
Console.WriteLine()
End Try
Throw New Exception("2")
End Sub
Sub MyHandler(sender As Object, args As UnhandledExceptionEventArgs)
Dim e As Exception = DirectCast(args.ExceptionObject, Exception)
Console.WriteLine("MyHandler caught : " + e.Message)
Console.WriteLine("Runtime terminating: {0}", args.IsTerminating)
End Sub
वैश्विक स्तर पर अपवाद संभाल करने के लिए ...
विंडोज आवेदन
System.Windows.Forms.Application.ThreadException घटना
आम तौर पर मुख्य विधि में प्रयुक्त। देखें MSDN Thread Exception
Asp.Net
System.Web.HttpApplication.Error घटना
आम तौर पर Global.asax फ़ाइल में प्रयुक्त। देखें MSDN Global.asax Global Handlers
कंसोल आवेदन
System.AppDomain.UnhandledException घटना
आम तौर पर मुख्य विधि में इस्तेमाल किया। MSDN UnhandledException
कुछ नुकसान के लिए [मेरे प्रश्न] (http://stackoverflow.com/questions/944/unhandled-exception-handler-in-net-11) पर एक नज़र डालें (कुछ जोड़े के लिए लिंक डरावनी ब्लॉग प्रविष्टियों कोडिंग)। – Ray