Re: Error handlers and Exception handlers

Tech-Archive recommends: Speed Up your PC by fixing your registry

From: Jay B. Harlow [MVP - Outlook] (Jay_Harlow_MVP_at_msn.com)
Date: 10/25/04


Date: Mon, 25 Oct 2004 11:16:13 -0500

sm,
In addition to Herfried's comments.

There have been many a thread of the benefits of Try/Catch verses On Error,
if you would like links on these discussions I can find them & post them. I
prefer Try/Catch & Try/Finally

I use Try/Catch when there is something specific that I need to do with the
exception. Otherwise I let my global exception handlers handle the event.
IMHO logging should go in the global exception handler. Too often I've seen
Try/Catch blocks where the exception information is "lost" making it harder
to diagnose problems.

I use Try/Finally blocks significantly more often to ensure that resources
are closed, using the "using" statement in C# simplifies this. We will have
to wait for Whidbey (VS.NET 2005) to get the "Using" statement in VB.NET.

For an unhandled exception:
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

"sm" <sm@discussions.microsoft.com> wrote in message
news:F46DE94D-CDAE-40E9-86E4-DBEA7661C297@microsoft.com...
> Hi,
>
> I have a couple of questions with regards to handling errors and
> exceptions.
>
> 1. If I use
>
> On Error goto Errhandler
> ..
> Errhandler:
>
> in all the routines will exceptions be also trapped by the 'On Error'?
>
> 2. Is using exceptions handling an alternative to using 'On Error'
> handlers?
>
> Thanks in advance.



Relevant Pages

  • Re: custom error numbers
    ... For information on using Throw to "raise errors" and Try/Catch to handle ... different global exception handlers. ... It can be beneficial to combine the above global handlers in your app, ... plus a Try/Catch in my Main. ...
    (microsoft.public.dotnet.languages.vb)
  • Re: The Try Catch
    ... I would favor global exception handlers over a lot of Try/Catch statements, ...
    (microsoft.public.dotnet.languages.vb)
  • Re: Error handlers and Exception handlers
    ... > There have been many a thread of the benefits of Try/Catch verses On Error, ... Otherwise I let my global exception handlers handle the event. ...
    (microsoft.public.dotnet.languages.vb)
  • Re: Try Catch Question
    ... > I would favor global exception handlers over a lot of Try/Catch ... > Use AddHandler in your Sub Main. ...
    (microsoft.public.dotnet.languages.vb)
  • Re: Best Practices Class Exceptions
    ... > Do I try..catch and trap the error and if so what do I do with it? ... float up to the Global Exception Handlers. ... use Try/Catch, I use Try/Catch where I have something specific to do with ... I let my global exception handlers handle the exception. ...
    (microsoft.public.dotnet.languages.vb)