CLAW Library (a C++ Library Absolutely Wonderful) 1.5.5

exception.hpp

Go to the documentation of this file.
00001 /*
00002     CLAW - a C++ Library Absolutely Wonderful
00003 
00004     CLAW is a free library without any particular aim but being useful to 
00005     anyone.
00006 
00007     Copyright (C) 2005-2010 Julien Jorge
00008 
00009     This library is free software; you can redistribute it and/or
00010     modify it under the terms of the GNU Lesser General Public
00011     License as published by the Free Software Foundation; either
00012     version 2.1 of the License, or (at your option) any later version.
00013 
00014     This library is distributed in the hope that it will be useful,
00015     but WITHOUT ANY WARRANTY; without even the implied warranty of
00016     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00017     Lesser General Public License for more details.
00018 
00019     You should have received a copy of the GNU Lesser General Public
00020     License along with this library; if not, write to the Free Software
00021     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
00022 
00023     contact: julien_jorge@yahoo.fr
00024 */
00030 #ifndef __CLAW_EXCEPTION_HPP__
00031 #define __CLAW_EXCEPTION_HPP__
00032 
00033 #include <exception>
00034 #include <string>
00035 
00036 namespace claw
00037 {
00042   class exception:
00043     public std::exception
00044   {
00045   public:
00050     exception( const std::string& msg ) throw()
00051       : m_msg(msg)
00052     { }
00053 
00055     ~exception() throw() {}
00056 
00058     const char* what() const throw() { return m_msg.c_str(); }
00059 
00060   private:
00062     const std::string m_msg;
00063 
00064   }; // class exception
00065   
00070   class bad_format:
00071     public exception
00072   {
00073   public:
00078     bad_format( const std::string& msg ) throw()
00079       : exception(msg)
00080     { }
00081   }; // class bad_format
00082 
00083 } // namespace claw
00084 
00090 #define CLAW_EXCEPTION( m )                                     \
00091   claw::exception( std::string(__FUNCTION__) + ": " + m )
00092 
00093 #endif // __CLAW_EXCEPTION_HPP__