Home » Questions » Computers [ Ask a new question ]

Global Exception Handling for winforms control

Global Exception Handling for winforms control

When working on ASP.NET 1.1 projects I always used the Global.asax to catch all errors. I'm looking for a similar way to catch all exceptions in a Windows Forms user control, which ends up being a hosted IE control. What is the proper way to go about doing something like this?

Asked by: Guest | Views: 38
Total answers/comments: 5
Guest [Entry]

You need to handle the System.Windows.Forms.Application.ThreadException event for Windows Forms. This article really helped me: http://bytes.com/forum/thread236199.html.
Guest [Entry]

"Currently in my winforms app I have handlers for Application.ThreadException, as above, but also AppDomain.CurrentDomain.UnhandledException
Most exceptions arrive via the ThreadException handler, but the AppDomain has also caught a few in my experience"
Guest [Entry]

"If you're using VB.NET, you can tap into the very convenient ApplicationEvents.vb. This file comes for free with a VB.NET WinForms project and contains a method for handling unhandled exceptions.

To get to this nifty file, it's ""Project Properties >> Application >> Application Events""

If you're not using VB.NET, then yeah, it's handling Application.ThreadException."
Guest [Entry]

To Handle Exceptions Globally...
Guest [Entry]

"Code from 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

Throw New Exception(""1"")
Catch e As Exception
Console.WriteLine(""Catch clause caught : "" + e.Message)
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"