Re: Crash during throw_func()



One method occurred to me, its rather nutty, and I'd probably not like to use it, but you could do something like:

void
Handle::RegisterCloseError( std::auto_ptr<Gnome::Vfs::exception> error )
{
   //store error handle somewhere
}

Handle::~Handle()
{
   if( gobj() )
      close( 'stored error handle' ) ;
}

And, not to be a stickler, but throwinig errors from a destructor is a Bad Idea (TM).
See: http://www.parashift.com/c++-faq-lite/exceptions.html#faq-17.3

So really, regardless of whether exceptions are enabled, this might need to be looked at.

Paul

On 10/25/06, Murray Cumming <murrayc murrayc com> wrote:
On Wed, 2006-10-25 at 10:35 -0500, Matt Hoosier wrote:
> Good idea. What's the preferred way to handle situations like this:
>
>   Handle::~Handle()
>   {
>     if(gobj())
>       close(); // This may throw an exception
>   }
>
> There's not really an opportunity to pass back the auto_ptr<exception>
> in this case. Should we just do:
>
>   Handle::~Handle()
>   {
>     if(gobj())
>     {
>       std::auto_ptr<Gnome::Vfs::exception> error;
>       close(error);
>     }
>   }
>
> and ignore the fact that the error may be set?

I think that's the only way. I can't see how we could do anything else
during a destructor.

--
Murray Cumming
murrayc murrayc com
www.murrayc.com
www.openismus.com

_______________________________________________
gtkmm-list mailing list
gtkmm-list gnome org
http://mail.gnome.org/mailman/listinfo/gtkmm-list



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]