Globální zpracování výjimek pro kontrolu WinForms

hlasů
33

Při práci na ASP.NET 1.1 projektů, vždy jsem použil global.asax zachytit všechny chyby. Sháním podobným způsobem zachytit všechny výjimky ve Windows Forms uživatelský ovládací prvek, který končí bytí hostované ovládací IE. Jaký je správný způsob, jak jít o tom něco takového?

Položena 05/08/2008 v 21:05
zdroj uživatelem
V jiných jazycích...                            


5 odpovědí

hlasů
24

Musíte zpracovat System.Windows.Forms.Application.ThreadExceptionudálost pro Windows Forms. Tento článek opravdu mi pomohl: http://bytes.com/forum/thread236199.html .

Odpovězeno 05/08/2008 v 21:11
zdroj uživatelem

hlasů
11

V současné době v mé WinForms app mám manipulátory Application.ThreadException, jak je uvedeno výše, ale takéAppDomain.CurrentDomain.UnhandledException

Většina výjimky dorazí přes ThreadExceptionpsovoda, ale AppDomain jeden má také chytil několik mých zkušeností

Odpovězeno 05/08/2008 v 21:42
zdroj uživatelem

hlasů
6

Pokud používáte VB.NET, můžete klepnout do velmi výhodnou ApplicationEvents.vb. Tento soubor je dodáván zdarma s WinForms projektu VB.NET a obsahuje metodu pro manipulaci s neošetřené výjimky .

Chcete-li získat do tohoto šikovný soubor, je to „Vlastnosti projektu >> Aplikace >> Aplikační události“

Pokud nepoužíváte VB.NET, pak ano, je to manipulace Application.ThreadException .

Odpovězeno 05/08/2008 v 21:16
zdroj uživatelem

hlasů
3

Zacházet výjimky globálně ...

Windows Application

System.Windows.Forms.Application.ThreadException událost

Obecně Používá se v hlavní metodou. Viz MSDN Thread Exception

Asp.Net

System.Web.HttpApplication.Error událost

Běžně se používá v souboru Global.asax. Viz MSDN global.asax obsluhy globálních

Aplikace Console

System.AppDomain.UnhandledException událost

Obvykle používá v hlavní metodou. Viz MSDN UnhandledException

Odpovězeno 19/05/2015 v 11:36
zdroj uživatelem

hlasů
2

Kód 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 
Odpovězeno 27/09/2013 v 22:55
zdroj uživatelem

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