$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Peter Dimov (pdimov_at_[hidden])
Date: 2006-11-15 08:54:14
David Abrahams wrote:
> void tag_exception(boost::exception& x)
> {
>    // do something to x
> }
>
> void read_file()
> {
>   boost::adorn_exception e( boost::bind( tag_exception, _1 ) );
>   ...
> }
This could work, if you find a way to write ~adorn_exception. You'd have
void tag_exception( boost::exception & x, std::string const & fn )
{
    x << error_info<tag_errno>( errno );
    x << error_info<tag_filename>( fn );
}
void read_file( std::string const & fn )
{
    boost::adorn_exception e( boost::bind( tag_exception, _1, boost::ref( 
fn ) ) );
    // do something that can throw
    e.dismiss();
}
instead of the straightforward
void read_file( std::string const & fn )
{
    try
    {
        // do something that can throw
    }
    catch( boost::exception & x )
    {
        x << error_info<tag_errno>( errno );
        x << error_info<tag_filename>( fn );
        throw;
    }
}
I prefer the second.