X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FException.hh;h=e673ab57741f866e4237683bb73a198a470dac5e;hb=47368f306a577d1e46df69a7f729bd3893cbe5e7;hp=7d5dbf1e557f85b83c7ef4ea44985952f784bd14;hpb=ac6a813d9d99f7add4e13aff7a4bcd314d5604a6;p=senf.git diff --git a/Utils/Exception.hh b/Utils/Exception.hh index 7d5dbf1..e673ab5 100644 --- a/Utils/Exception.hh +++ b/Utils/Exception.hh @@ -1,6 +1,6 @@ // $Id$ // -// Copyright (C) 2006 +// Copyright (C) 2006 // Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) // Kompetenzzentrum fuer Satelitenkommunikation (SatCom) // Stefan Bund @@ -20,6 +20,9 @@ // Free Software Foundation, Inc., // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +/** \file + \brief Exception public header */ + #ifndef HH_Exception_ #define HH_Exception_ 1 @@ -32,27 +35,48 @@ namespace senf { + /** \brief Exception handling standard UNIX errors (errno) + + This exception is thrown to signal generic errno failures. + + \todo make where and err accessors and make the member vars private - struct SystemException : public std::exception + \idea Add a template class derived from SystemException which + takes the error number as a numeric argument. This allows + catching specific errno conditions: ErrnoException etc. + + \idea Add a generic error thrower which takes the origin + string and errno value as an argument and will throw a + corresponding template class instance. This would just be a + big switch statement containing all possible errno values, + probably created using some macro metaprogramming. + */ + class SystemException : public std::exception { - explicit SystemException(int err_) : where(0), err(err_) { init(); } - SystemException(char const * where_, int err_) : where(where_), err(err_) { init(); } + public: + explicit SystemException(int err); ///< SystemException without error lokus info + /**< \param[in] err error number (the errno value) */ + SystemException(char const * where, int err); ///< SystemException with error lokus info + /**< \param[in] where description of error origin + \param[in] err error number (the errno value) */ - virtual char const * what() const throw(); + virtual char const * what() const throw(); ///< Return verbose error description - char const * where; - int err; + char const * where; ///< Error origin + int err; ///< Error number - virtual ~SystemException() throw() {} + virtual ~SystemException() throw(); private: void init(); - std::string buffer_; + std::string buffer_; }; - + + enum NoThrow_t { nothrow }; + } ///////////////////////////////hh.e//////////////////////////////////////// -//#include "Exception.cci" +#include "Exception.cci" //#include "Exception.ct" //#include "Exception.cti" #endif @@ -60,5 +84,10 @@ namespace senf { // Local Variables: // mode: c++ +// fill-column: 100 // c-file-style: "senf" +// indent-tabs-mode: nil +// ispell-local-dictionary: "american" +// compile-command: "scons -u test" +// comment-column: 40 // End: