
The proposed library by "Emil Dotchevski" needs a review manager. The library is available here: http://www.revergestudios.com/boost-exception/boost-exception.zip The library is well documented, with samples and is packaged in the boost folder structure. I havn't compiled the samples, but the library appears to well done. I'm not an expert in exception handling beyond having used "std::exception". However, This library appears to be an interesting extension to the standard library and worthy of consideration as a "boost" library If no one volunteers to be the "review manager" within the next couple of weeks, I'll volunteer and put it up for review in august. This library has been in the reivew queue for at least nine months. Thanks to the "Emil" for being patient. I copied an interesting "snippit" from the libraries documentation. <snippit> Why bother with Boost Exception? When I design my exception class hierarchy, I can ensure that the types I throw can pack all the information available when I throw; I don't need boost::exception for that. The problem is that exceptions are caught by the client code, and you (the designer of the library that throws exceptions) cannot always provide all the information that is necessary to format a meaningful message for the user. Consider this Boost Exception usage: #include <boost/exception.hpp> #include <string> #include <stdio.h> class error: public boost::exception, public std::exception { }; class io_error: public error { }; class file_open_error: public io_error { }; class file_read_error: public io_error { }; class file_write_error: public io_error { }; struct tag_io_source_name: boost::error_info_value<std::string> { }; struct tag_io_destination_name: boost::error_info_value<std::string> { }; //Throws file_open_error. boost::shared_ptr<FILE> file_open( char const * name, char const * mode ); //Throws file_read_error, file_write_error. void copy_content( FILE * source, FILE * destination ); void copy_file( char const * source, char const * destination ) { boost::shared_ptr<FILE> f1 = file_open(source,"rb"); boost::shared_ptr<FILE> f2 = file_open(destination,"wb"); try { copy_content( f1.get(), f2.get() ); } catch( boost::exception & x ) { x << boost::error_info<tag_io_source_name>(source) << boost::error_info<tag_io_destination_name>(destination); throw; } } </snippit>
participants (1)
-
Tom Brinkman