Re: Retrieve thrown exception in using (disposable) cleanup
From: Alexander Shirshov (alexander_at_omnitalented.com)
Date: 03/22/05
- Next message: Carl Frisk: "Re: How to ftp to a mainframe gdg"
- Previous message: Frank Rizzo: "Keyboard Region commands"
- In reply to: Emil Astrom: "Retrieve thrown exception in using (disposable) cleanup"
- Next in thread: Emil Astrom: "Re: Retrieve thrown exception in using (disposable) cleanup"
- Reply: Emil Astrom: "Re: Retrieve thrown exception in using (disposable) cleanup"
- Messages sorted by: [ date ] [ thread ]
Date: Tue, 22 Mar 2005 10:06:08 +0700
Emil,
It's generally suggested not to throw exceptions in Dispose:
http://blogs.msdn.com/clyon/archive/2004/09/23/233464.aspx
But if you insist... Can you save ErrorException in a field until Dispose
method called?
class MySession : : IDisposable
{
ErrorException thrownEx = null;
Dispose()
{
if (mytransaction.IsOpen)
throw new SessionException("Transaction not closed!", thrownEx);
}
}
OtherFunc()
{
using (MySession session)
{
:
thrownEx = new ErrorException("whoops!");
throw thrownEx;
session.Commit();
}
}
HTH,
Alexander
"Emil Astrom" <emil_astrom(at)hotmail.com> wrote in message
news:uU9o$CnLFHA.3760@TK2MSFTNGP12.phx.gbl...
> Hi!
>
> I wonder if there's a way to retrieve information about thrown, not yet
> handled exceptions. My situation is similar to the code below:
>
> class MySession : IDisposable
> {
> :
> :
> Dispose()
> {
> if (mytransaction.IsOpen)
> throw new SessionException("Transaction not closed!", XXX);
> }
> }
>
> OtherFunc()
> {
> using (MySession session)
> {
> :
> throw new ErrorException("whoops!");
> session.Commit();
> }
> }
>
>
> What I want to do is to have a Dispose() method that can include the
> already thrown exception as an inner exception in its own exception that
> it needs to throw if it's called prematurely. What I would like to have in
> the example above is a thrown SessionException with the ErrorException
> instance in the InnerException property. Can this be done?
>
> If not, then I can only see two options:
> * not include ErrorException in my SessionException when I throw it, but
> that means losing the original error
> * not throw an exception in my Dispose method at all, but that means not
> having any error messages for improper use of the MySession class, e.g.
> forgetting to call Commit().
>
> Maybe someone have more (and better) alternatives? All suggestions are
> greatly appreciated!
>
> Regards,
>
> Emil
>
- Next message: Carl Frisk: "Re: How to ftp to a mainframe gdg"
- Previous message: Frank Rizzo: "Keyboard Region commands"
- In reply to: Emil Astrom: "Retrieve thrown exception in using (disposable) cleanup"
- Next in thread: Emil Astrom: "Re: Retrieve thrown exception in using (disposable) cleanup"
- Reply: Emil Astrom: "Re: Retrieve thrown exception in using (disposable) cleanup"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|