Catching every unhandled exception?

  • Thread starter Thread starter Elp
  • Start date Start date
E

Elp

Hi,

I've developped a Window Form C# application which main form contains
several activex controls. No problems most of the time but on some machine,
the application crashes when the main form is closed with a
NullReferenceException caused by the DisposeAxControl which, i guess, is
supposed to dispose one of my ActiveX.

This is not a big problem as the application is closing anyway but i'd like
to suppress this crash message. However, i can't find a way to catch this
exception in my application. Even when putting the whole main method in a
try catch block, this exception is not catched! How can i catch all
unhandeled exceptions in an application?
 
Hi Elp,
To catch Windows Form's unhandled exception hook-up
AppDomain.UnhandledException and Application.ThreadException events
 
Elp,
In addition to the other comments.

Depending on the type of application you are creating, .NET has three
different global exception handlers.

For ASP.NET look at:
System.Web.HttpApplication.Error event
Normally placed in your Global.asax file.

For console applications look at:
System.AppDomain.UnhandledException event
Use AddHandler in your Sub Main.

For Windows Forms look at:
System.Windows.Forms.Application.ThreadException event
Use AddHandler in your Sub Main.

It can be beneficial to combine the above global handlers in your app, as
well as wrap your Sub Main in a try catch itself.

There is an article in the June 2004 MSDN Magazine that shows how to
implement the global exception handling in .NET that explains why & when you
use multiple of the above handlers...

http://msdn.microsoft.com/msdnmag/issues/04/06/NET/default.aspx

For example: In my Windows Forms apps I would have a handler attached to the
Application.ThreadException event, plus a Try/Catch in my Main. The
Try/Catch in Main only catches exceptions if the constructor of the MainForm
raises an exception, the Application.ThreadException handler will catch all
uncaught exceptions from any form/control event handlers.

Hope this helps
Jay
 
Stoitcho Goutsev (100) said:
Hi Elp,
To catch Windows Form's unhandled exception hook-up
AppDomain.UnhandledException and Application.ThreadException events

Thanks to both of you. I think that it is what i was looking for. I'll give
it a try.
 
Back
Top