Boost logo

Boost :

From: Robert Kawulak (kawulak_at_[hidden])
Date: 2007-09-30 14:03:45


> From: Phil Endecott
> I'm not keen on the use of operator<< to add the data to the
> exceptions.
[...]
> If your code used a more conventional syntax, e.g.
>
> E.add_info<errno_tag>(errno);

Sounds like a good idea to me too. It could both simplify the interface (no
boost::error_info class and the << operator, just one template member function)
and make throw expressions shorter. This would also resolve the ambiguity
mentioned by Phil.

The boost::get_error_info could also be a member function for consistency, so
you would get:

try
{
   try
   {
      throw my_error().add_info<tag_errno>(errno).add_info<tag_foo>(foo);
   }
   catch( boost::exception & x )
   {
      x.add_info<tag_file_name>(file_name);
      throw;
   }
}
catch( my_error & x )
{
   if( int const * errnum = x.get_info<tag_errno>() )
      std::cerr << "Error code: " << (*errnum);
}

Best regards,
Robert


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk