Boost logo

Boost :

From: Reece Dunn (msclrhd_at_[hidden])
Date: 2004-03-27 11:39:15


Thorsten Ottosen wrote:
>"Reece Dunn" <msclrhd_at_[hidden]> wrote in message
>
> > A trick I use when handling HRESULT error codes is to have a class like
>this
> > (adapted for int error type):
>
>Maybe you should start on such a small helper library and submit it?

I have attached what I have so far. It is a policy-based approach that
allows you to specify the error type/check mechanism and a message holder.
It also fixes the throw on constructor problem mentioned by others.

e.g.

try
{
   boost::errorcheck<> ec = 7;

   ec = -1;
   std::cout << "Hello\n";
}
catch( boost::errorcheck<> ec )
{
   std::cout << "error: check failed" << '\n';
}

output ==>
   error: check failed

If you want to note the function called from, like in Volodya's examples,
you can use:

typedef boost::errorcheck< boost::policy::error_storage<>,
boost::policy::errormsg_storage >
   msgerrorcheck;

try
{
   msgerrorcheck em;
   em( "open" ) = -1;
   em( "write" ) = 3;
}
catch( msgerrorcheck em )
{
   std::cout << "error: " << em.get_msg() << '\n';
}

output ==>
   error: open

This is a slightly different syntax, but gives what is intended.

NOTE: I have not yet provided an errno class, but it should not be difficult
to do.

Regards,
Reece

_________________________________________________________________
It's fast, it's easy and it's free. Get MSN Messenger today!
http://www.msn.co.uk/messenger




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