#include <boost/type_traits/is_convertible.hpp>
//#include "Exception.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
/** \defgroup exception Exception classes
This will add the user information to any %senf exception thrown. The Exception is however not a
stream. If you need to do more extensive formating, either use an intermediate string-stream or
- use <a href="http://www.boost.org/libs/format/doc/format.html">Boost.Format</a>:
+ use <a href="http://www.boost.org/doc/libs/release/libs/format/index.html">Boost.Format</a>:
\code
- try {
+ try {
// ...
}
catch (senf::ExceptionMixin & e) {
SENF_WRAP_EXC(std::bad_cast)
SENF_WRAP_EXC(somelib::FooException)
}
- \endcode
+ \endcode
The re-thrown exception can then be caught as <tt>std::bad_cast</tt> or as senf::ExceptionMixin
as needed. It is safe, to wrap an exception twice (the macro will detect this case).
\code
/**< Adds \a text to the description text. */
protected:
- explicit ExceptionMixin(std::string const & description = "");
+ explicit ExceptionMixin(std::string const & description = "");
///< Initialize exception with string
/**< \a description is the initial error description
string. This should probably be a string constant
virtual char const * what() const throw();
///< get exception description and backtrace if available
/**< get description of the exception (message()) and backtrace
- information if SENF is compiled with \c SENF_DEBUG */
+ information if SENF is compiled with \c SENF_DEBUG */
protected:
explicit Exception(std::string const & description = "");
};
-
+
/** \brief Wrapper for standard non-senf exceptions
This class wraps an exception of type \a BaseException and adds functionality from
exception description string. This operator allows to
use Exception instances like streams. The conversion is
performed using <code>boost::lexical_cast</code> and is
- therefor identical to a streaming operation.
+ therefor identical to a streaming operation.
\see \ref exception */
\code
// Standard usage: Take \c errno from environment
- throw senf::SystemException("::open()")
+ throw senf::SystemException("::open()")
<< " while opening configuration file: " << filename;
// You may however explicitly specify the errno value
class SystemException : public Exception
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
explicit SystemException(std::string const & descr = "" _SENF_EXC_DEBUG_ARGS);
explicit SystemException(int code _SENF_EXC_DEBUG_ARGS);
virtual ~SystemException() throw();
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
int errorNumber() const; ///< Error code (\c errno number)
char const * errorString() const; ///< Error string (\c strerror() value)
- bool anyOf(int c0, int c1=0, int c2=0, int c3=0, int c4=0, int c5=0,
+ bool anyOf(int c0, int c1=0, int c2=0, int c3=0, int c4=0, int c5=0,
int c6=0, int c7=0, int c8=0, int c9=0) const;
///< \c true, if errorNumber() is one of \a c0 ... \a c9
private:
void init(std::string const & descr, int code _SENF_EXC_DEBUG_ARGS_ND);
-
+
int code_;
};
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "Exception.cci"
//#include "Exception.ct"
#include "Exception.cti"
// compile-command: "scons -u test"
// comment-column: 40
// End:
-
+