2008-08-05 19 views
33

एएसपी.NET 1.1 प्रोजेक्ट्स पर काम करते समय मैंने हमेशा सभी त्रुटियों को पकड़ने के लिए ग्लोबल.एक्सएक्स का उपयोग किया। मैं एक विंडोज़ फॉर्म उपयोगकर्ता नियंत्रण में सभी अपवादों को पकड़ने के लिए एक समान तरीके की तलाश में हूं, जो एक होस्टेड आईई नियंत्रण होने के समाप्त होता है। ऐसा कुछ करने के बारे में जाने का उचित तरीका क्या है?Winforms नियंत्रण के लिए ग्लोबल अपवाद हैंडलिंग

+0

कुछ नुकसान के लिए [मेरे प्रश्न] (http://stackoverflow.com/questions/944/unhandled-exception-handler-in-net-11) पर एक नज़र डालें (कुछ जोड़े के लिए लिंक डरावनी ब्लॉग प्रविष्टियों कोडिंग)। – Ray

उत्तर

24

आपको विंडोज फॉर्म के लिए System.Windows.Forms.Application.ThreadException ईवेंट को संभालने की आवश्यकता है। इस लेख ने वास्तव में मेरी मदद की: http://bytes.com/forum/thread236199.html

6

यदि आप वीबी.नेट का उपयोग कर रहे हैं, तो आप बहुत सुविधाजनक ApplicationEvents.vb में टैप कर सकते हैं। यह फ़ाइल एक VB.NET WinForms प्रोजेक्ट के साथ मुफ्त में आती है और unhandled exceptions को संभालने के लिए एक विधि शामिल है।

इस गंधा फाइल करने के लिए पाने के लिए, यह "प्रोजेक्ट गुण >> आवेदन >> आवेदन घटनाक्रम"

आप VB.NET का उपयोग नहीं कर रहे हैं, तो हाँ, यह Application.ThreadException से निपटने है।

11
वर्तमान में मैं Application.ThreadException के लिए संचालकों है, जैसा कि ऊपर मेरी WinForms अनुप्रयोग में

, लेकिन यह भी AppDomain.CurrentDomain.UnhandledException

अधिकांश अपवाद ThreadException हैंडलर के माध्यम से आने, लेकिन AppDomain एक भी मेरे अनुभव

+3

एमएसडीएन से नमूना कोड दिखाता है कि दोनों प्रकार के अनचाहे अपवादों को कैसे पकड़ें: [msdn] (http://msdn.microsoft.com/en-us/library/system.windows.forms.application.threadexception.aspx) –

2

संहिता में कुछ पकड़ा गया 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 
3

वैश्विक स्तर पर अपवाद संभाल करने के लिए ...

विंडोज आवेदन

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