Globalne Obsługa wyjątków dla kontroli WinForm

głosy
33

Podczas pracy przy projektach ASP.NET 1.1 Zawsze używał Global.asax złapać wszystkie błędy. Szukam sposób podobny do połowu wszystkie wyjątki w Windows Forms kontroli użytkownika, który kończy się bycie gospodarzem kontrola IE. Jaka jest właściwa droga o zrobieniu czegoś takiego?

Utwórz 05/08/2008 o 21:05
źródło użytkownik
W innych językach...                            


5 odpowiedzi

głosy
24

Trzeba obsłużyć System.Windows.Forms.Application.ThreadExceptionzdarzenie dla Windows Forms. Ten artykuł bardzo mi pomógł: http://bytes.com/forum/thread236199.html .

Odpowiedział 05/08/2008 o 21:11
źródło użytkownik

głosy
11

Obecnie w moim WinForm app mam teleskopowe dla Application.ThreadException, jak wyżej, ale równieżAppDomain.CurrentDomain.UnhandledException

Większość wyjątki dotrzeć za pośrednictwem ThreadExceptionobsługi, ale również jeden AppDomain złapać kilka z mojego doświadczenia

Odpowiedział 05/08/2008 o 21:42
źródło użytkownik

głosy
6

Jeśli używasz VB.NET, można wykorzystać w bardzo dogodnym ApplicationEvents.vb. Ten plik jest za darmo z projektu WinForm VB.NET i zawiera metodę obsługi nieobsłużonych wyjątków .

Aby dostać się do tego fajną pliku, jak: „Project Properties >> Zastosowanie >> Zastosowanie Zdarzenia”

Jeśli nie używasz VB.NET, a następnie Tak, to obsługa Application.ThreadException .

Odpowiedział 05/08/2008 o 21:16
źródło użytkownik

głosy
3

Do obsługi wyjątków Globalnie ...

Windows Application

impreza System.Windows.Forms.Application.ThreadException

Powszechnie stosowane w metodzie Main. Patrz MSDN Exception wątku

Asp.Net

impreza System.Web.HttpApplication.Error

Zwykle używany w pliku Global.asax. Patrz MSDN global.asax globalne Manipulatory

Aplikacja konsoli

impreza System.AppDomain.UnhandledException

Powszechnie stosowane w metodzie Main. Patrz MSDN UnhandledException

Odpowiedział 19/05/2015 o 11:36
źródło użytkownik

głosy
2

Kod z 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 
Odpowiedział 27/09/2013 o 22:55
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more