Improve company productivity with a Business Account.Sign Up

  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 339
  • Last Modified:

Handling an 'unhandled exception'

I am trying to write a catch-all exception handler in my VB.NET application.

I started out by writing a handler routine and directing the execution to it with

    AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf Me.UnhandledExceptionHandler

This works fine whilst working through Visual Studio but as soon as I publish the app and run it on another machine it doesn't. It simply behaves as usual and reports the error with the option to Quit or Continue.

Can anyone explain this to me?

Alternatively, I started looking at using


but get an error about setting the value before initialising any controls. Can anyone explain where I would set the Unhandled Exception Mode and how I direct it to a user-defined routine.

Many thanks in advance

3 Solutions
lojk.Net and Infrastructure ConsultantCommented:
in my sub main on one of my apps i do this...


                    frmTagFindAndReplaceOBJ = New frmTagFindAndReplace


                Catch ex As Exception

                End Try

the principle is the same, even if you dont wont to start a form

sub main
                Catch ex As Exception
                End Try
end sub

I know there are more sophisticated ways to do this with the framework but this works fine too...
Hi Lojk,
This blog explains part of your problem.
stuartbarberAuthor Commented:

OK, that sounds OK but how do I add the exception handler around the, the main procedure is hidden from me.

I am using Visual Studio 2005.


Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

Try this:

1) Open your project's Properties .
2) Select hte Application tab on the left.
3) Next to the combo for the Spash Screen is a button that says "Application Events". Click it.
    A code window should open up. Line 1 should read "Namespace My"
4) In the left combo above the code (should say "General") select MyApplication Events.
5) In the Right combo, select Unhandled Exception

The editor should create a routine stub that you can fill in with code when you get an unhandled exception...
lojk.Net and Infrastructure ConsultantCommented:
Jscherer - its not my question. But you are right, that link defiently highlights a quirk in the framework (that i have fortunately never encountered doing it the way i detail above)


VS2005 did change a few bits and bobs from previous .net versions and yes the default is to hide all designer code (i think that was a bit of a MS-take).

In the solution explorer there is, on the top bar, a 'Show All Files' Toggle, that will show you any files related by name or content to the current file.

Now as far as loading the app is concerned..

add a modSomething Module to your project and add a
Public Sub Main
Procedure as i have detailed above.
and in the project properties set the startup object to 'Sub Main'. You may need to switch off 'Application Framework' to do this (you can always do an 'application.visualstyles=' in the submain if you need to)

anyway exactly how much detail do you need on a failed app? A gracefull exit and errorlog.txt is more than enough.. You should be catching these kind of failures way, way, way up the application tree not waiting for them to throw a fatal exception on the entry point...

lojk.Net and Infrastructure ConsultantCommented:
probably an even split 'tween jscherer,ptaka  and i.?  everything there that stubarber wanted..
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now