Dear Frinds,

In the context of handling errors, I wud like to take our discussion a bit
ahead.

I would like to know the following things:
        1. What information we should store in the log files.
        2. I am having a XML file created at the client side. The
application is based on ASP.Net. I would like to know the best ways to
receive the error information. I mean to say what are the ways to get the
information from client side. For eg., I should ask my client my client to
mail that xml file or should I write a function that notifies me through
smtp that an error has occurred or should I write some function to get the
xml file at periodic intervals, so that I can fix up the problem and give
him a updated dll file.

Thanks,
Aggarwal.


-----Original Message-----
From: Unmoderated discussion of advanced .NET topics.
[mailto:[EMAIL PROTECTED] On Behalf Of Peter Ritchie
Sent: Saturday, September 17, 2005 10:16 PM
To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM
Subject: Re: [ADVANCED-DOTNET] Best way to handle errors in .net

Paul, I agree, clarifying that CLR base exception types (Exception,
SystemException, ApplicationException) should not be caught without rethrow
is an excelling suggestion.

http://www.peterRitchie.com/

On Sat, 17 Sep 2005 09:54:35 -0700, Paul Mehner <[EMAIL PROTECTED]> wrote:

>Peter, please accept my apology for missing the context conveyed by the
>capital letter E. I completely agree with you after you pointed this out.
>
>If Mark would like another revision, I would suggest that we could make
the
>point even clearer by stating that:
>
>                Developers should never catch non-CLS compliant
>exceptions (e.g. a catch statement with no exception type), or a CLR
>base exception (System.Exception, System.SystemException, or
System.ApplicationException).
>
>While the last two base class exception types (which inherit from
>System.Exception) have been made mostly irrelevant because developers
inside
>and outside of Microsoft ignored their intended purposes, catching them
>is still considered nearly as bad as catching System.Exception.
>
>The 2.0 framework will wrap and re-throw non-CLS exceptions inside of a
CLS
>exception so that all exceptions can be caught, not just those that are
CLS
>compliant. Information on this new feature and another version of
>Mark's advice on exceptions can be found at:
>http://msdn2.microsoft.com/en-us/library/ms135515
>
>Cheers!
>
>Paul Mehner
>South Sound .NET User Group
>http://www.ssdotnet.org
>
>-----Original Message-----
>From: Unmoderated discussion of advanced .NET topics.
>[mailto:[EMAIL PROTECTED] On Behalf Of Peter Ritchie
>Sent: Friday, September 16, 2005 8:44 PM
>To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM
>Subject: Re: [ADVANCED-DOTNET] Best way to handle errors in .net
>
>Paul, the capital E on Exception didn't make it clear.  I wasn't
>advocating that exceptions should never be caught (that's wrong on many
>levels)  I was talking about the class "Exception".  (with
>clarification from Mark) "Exception" should never be caught without
>rethrow, except in a top-level handler.  This is based upon "don't
>catch exceptions you don't know how to handle", the "Exception" class
>cannot provide enough information to be handled (except at a top-level
>handler where you just log the exception and exit).
>
>http://www.peterRitchie.com/
>
>On Fri, 16 Sep 2005 13:31:11 -0700, Paul Mehner <[EMAIL PROTECTED]> wrote:
>
>>I agree with Peter Ritchie that Mark Brooks' documentation on
>>exceptions
>is
>>"exceptionally" good. There are times though, Peter, when catching an
>>exception _is_ the right thing to do (see Mark's 2nd part of #1) and
>>therefore it should not be re-thrown. For example, if I caught a
>>System.IO.FileNotFoundException and then I prompted the user to show
>>me where the file was located, this would be a case where catching an
>exception
>>without re-throwing is the correct thing to do. You must therefore re-
word
>>your suggestion to be "always re-throw exceptions that you catch and
don't
>>properly handle" -- but because that statement would violate the
>>primary rules for catching exceptions, I am forced to respectfully
>>disagree with
>the
>>clarification.
>>
>>Cheers!
>>
>>--Paul
>>
>>
>>-----Original Message-----
>>From: Unmoderated discussion of advanced .NET topics.
>>[mailto:[EMAIL PROTECTED] On Behalf Of Peter
>>Ritchie
>>Sent: Friday, September 16, 2005 11:34 AM
>>To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM
>>Subject: Re: [ADVANCED-DOTNET] Best way to handle errors in .net
>>
>>Excellent exception practices.  I would only clarify that Exception
should
>>never be caught without a rethrow.
>>
>>http://www.peterRitchie.com/
>>
>>Mark Brooks wrote:
>>
>>First as regards exceptions themselves:
>>
>>1. Do NOT catch exceptions you don't know how to handle - this means
>>correct for the problem or do some unwind work.  If you _KNOW_ what to
>>do when an Exception happens, catch.  If not, DON'T.
>>
>>2. Do NOT catch exceptions to merely translate the to another type of
>>exception (even if you do set the InnerException property).  If you
>>don't have something to add, don't catch. This is wrong:
>>   catch (Exception ex)
>>   {
>>      // do something interesting (see 1)
>>      throw new MyCoolException("nothing of value here", ex);
>>   }
>>
>>3. Do NOT catch an exception then throw it again, rather do a
>>"rethrow".  This is wrong:
>>   catch (Exception ex)
>>   {
>>      // do something interesting (see 1)
>>      throw ex;  // StackTrace now loses everything below this level
>>   }
>>
>>Rather do this:
>>   catch (Exception ex)
>>   {
>>      // do something interesting (see 1)
>>      throw;  // notice there's no ex! The original StackTrace is left
>>intact.
>>   }
>>
>>4. Do NOT derive all of your exceptions from ApplicationException (or
>>some other base level exception of your creation), as you are not
>>adding value by doing so.  If you want to standardize your exception
>>creation, write builder methods to throw specific exceptions in
>>regular "forms".
>>
>>5. If you do have contextual information you can add to an exceptionm,
>>DO SO.  Use the Exception.Data collection, that's what it is there
>>for!  You can add the values of interesting parameters to you methods.
>> This is especially useful in the context of a database layer or other
>>low-level library.  You can squirrel-away the SQL and all the
>>parameters.  Only do this if you think that these details will be
>>useful for post-mortem diagnosis.  If the information you log is
>>transitory it will NOT help tracking down errors from logs. This is
>>(mostly) good:
>>   catch (Exception ex)
>>   {
>>      ex.Data.Add("SQL", command.Text);
>>      ex.Data.Add("key", myKey);
>>      // or enumerate command Parameters collection
>>      throw;  // (see #3)
>>   }
>>
>>6. If you add things to the Exception.Data collection, make sure that
>>you don't conflict with what is already there as this is a HashTable.
>>I use the catching-class's name to scope the values.  This is much
>>better than #5:
>>   catch (Exception ex)
>>   {
>>      ex.Data.Add(typeof(MyClass).ToString() + ".MyMethod.SQL",
>>command.Text);
>>      throw;  // (see #3)
>>   }
>>
>>7. If you are catching exceptions to do some undo-work (like rolling
>>back transactions, closing handles, etc.) Strongly consider creating a
>>_very small_ wrapper for that resource and implementing IDisposable on
>>it.  Then you can have a "using" clause to hide the try { } finally {
>>} block.

===================================
This list is hosted by DevelopMentorR  http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com

===================================
This list is hosted by DevelopMentorĀ®  http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com

Reply via email to