On 10/26/06, Paul Davis <[EMAIL PROTECTED]> wrote:
> 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.

Agreed. Maybe a bug should be filed as a reminder to change this in
the next ABI version (right now [2.14], it's still compatible with
2.6).

>
> Paul
>
>
> On 10/25/06, Murray Cumming <[EMAIL PROTECTED]> 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
> > [EMAIL PROTECTED]
> > www.murrayc.com
> > www.openismus.com
> >
> > _______________________________________________
> > gtkmm-list mailing list
> > [email protected]
> > http://mail.gnome.org/mailman/listinfo/gtkmm-list
> >
>
>
_______________________________________________
gtkmm-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Reply via email to