http://www.boost.org/doc/libs/1_38_0/libs/scope_exit/doc/html/scope_exit/alternatives.html
try
{
     File passwd("/etc/passwd");
     BOOST_SCOPE_EXIT( (&passwd) )
     {
         passwd.close();
     } BOOST_SCOPE_EXIT_END
     // ...
}
catch(...)
{
     log("could not get user info");
     throw;
}