2#ifndef WIBBLE_EXCEPTION_H
3#define WIBBLE_EXCEPTION_H
109 static std::vector< std::string > &
context() {
112 s_context =
new std::vector< std::string >();
116 template<
typename O >
157 return "no context information available";
159 std::stringstream res;
161 std::ostream_iterator< std::string >( res,
", \n " ) );
162 std::string
r = res.str();
163 return std::string(
r, 0,
r.length() - 7 );
190 virtual const char*
type()
const throw () {
return "Generic"; }
195 return "an unspecified problem happened; if you see this message, please report a bug to the maintainer";
230 virtual const char*
type()
const throw () {
return "Interrupted"; }
247 virtual const char*
type()
const throw () {
return "WaitInterrupted"; }
263 virtual const char*
type()
const throw () {
return "Consistency"; }
268 return "consistency check failed";
281 return std::string(
"bad cast: " ) +
typeinfo();
286template<
typename From,
typename To >
293 virtual std::string
typeinfo()
const throw() {
return std::string(
"from " )
294 +
typeid(
From ).name()
296 +
typeid(
To ).name(); }
319 virtual const char*
type()
const throw () {
return "OutOfRange"; }
356 const std::string&
context)
throw ()
372 return "ValOutOfRange<>";
405 virtual const char*
type()
const throw () {
return "System"; }
426 File(
const std::string& name,
const std::string&
context)
throw () :
430 virtual const char*
type()
const throw () {
return "File"; }
Exception thrown when some consistency check fails.
Definition exception.h:255
Consistency(const std::string &context, const std::string &error=std::string())
Definition exception.h:259
virtual const char * type() const
Get a string tag identifying the exception type.
Definition exception.h:263
virtual std::string desc() const
Get a string describing what happened that threw the exception.
Definition exception.h:265
~Consistency()
Definition exception.h:261
Store context information for an exception.
Definition exception.h:137
std::vector< std::string > m_context
Definition exception.h:139
Context(const std::string &context)
Definition exception.h:147
Context()
Definition exception.h:142
std::string formatContext() const
Definition exception.h:154
void addContext(const std::string &c)
Definition exception.h:153
const std::vector< std::string > & context() const
Definition exception.h:166
Base class for exceptions for file I/O.
Definition exception.h:421
std::string m_name
Definition exception.h:423
virtual std::string desc() const
Get the description of the error code.
Definition exception.h:432
~File()
Definition exception.h:428
virtual const char * type() const
Get a string tag identifying the exception type.
Definition exception.h:430
File(const std::string &name, const std::string &context)
Definition exception.h:426
Base class for all exceptions.
Definition exception.h:180
Generic()
Definition exception.h:185
Generic(const std::string &context)
Definition exception.h:186
virtual const char * type() const
Get a string tag identifying the exception type.
Definition exception.h:190
virtual std::string desc() const
Get a string describing what happened that threw the exception.
Definition exception.h:193
virtual const std::string & fullInfo() const
Format in a string all available information about the exception.
Definition exception.h:205
virtual const char * what() const
Definition exception.h:213
std::string m_formatted
Definition exception.h:182
virtual ~Generic()
Definition exception.h:187
Install an unexpected handler for the duration of its scope.
Definition exception.h:97
~InstallUnexpected()
Definition exception.cpp:81
void(* old)()
Definition exception.h:99
Exception thrown when some long event is interrupted by an external event (like a system call being i...
Definition exception.h:225
Interrupted(const std::string &context)
Definition exception.h:228
Interrupted()
Definition exception.h:227
virtual const char * type() const
Get a string tag identifying the exception type.
Definition exception.h:230
Exception thrown when some value is out of range.
Definition exception.h:310
virtual std::string var_desc() const
Get a short description of the variable that has been checked.
Definition exception.h:322
virtual const char * type() const
Get a string tag identifying the exception type.
Definition exception.h:319
OutOfRange(const std::string &var_desc, const std::string &context)
Definition exception.h:315
virtual std::string desc() const
Get a string describing what happened that threw the exception.
Definition exception.h:324
std::string m_var_desc
Definition exception.h:312
~OutOfRange()
Definition exception.h:317
Base class for system exceptions.
Definition exception.h:397
virtual int code() const
Get the system error code associated to the exception.
Definition exception.h:408
virtual const char * type() const
Get a string tag identifying the exception type.
Definition exception.h:405
virtual std::string desc() const
Get the description of the error code.
int m_errno
Definition exception.h:399
Exception thrown when index checking fails.
Definition exception.h:345
C m_inf
Definition exception.h:348
C m_val
Definition exception.h:347
virtual std::string desc() const
Get the value that caused the index to go out-of-bounds.
virtual C sup() const
Get the maximum allowed value for this index.
Definition exception.h:367
virtual const char * type() const
Get the value that caused the index to go out-of-bounds.
Definition exception.h:370
C m_sup
Definition exception.h:349
virtual C val() const
Get the value that caused the index to go out-of-bounds.
Definition exception.h:363
ValOutOfRange(const std::string &var_desc, C val, C inf, C sup, const std::string &context)
Construct the exception; minBound and maxBound are the bounds of the valid index range (inclusive).
Definition exception.h:355
virtual C inf() const
Get the minimum allowed value for this index.
Definition exception.h:365
Exception thrown when some system wait is interrupted by a signal.
Definition exception.h:242
virtual const char * type() const
Get a string tag identifying the exception type.
Definition exception.h:247
WaitInterrupted(const std::string &context)
Definition exception.h:244
void DefaultUnexpected()
Basic unexpected handler.
Definition exception.cpp:69
Definition exception.h:106
~AddContext()
Definition exception.h:129
static void copyContext(O out)
Definition exception.h:117
AddContext(std::string s)
Definition exception.h:123
static std::vector< std::string > & context()
Definition exception.h:109
std::string m_context
Definition exception.h:121
static std::vector< std::string > * s_context
Definition exception.h:107
Definition exception.h:288
virtual std::string typeinfo() const
Definition exception.h:293
~BadCastExt()
Definition exception.h:292
BadCastExt(const std::string &error=std::string())
Definition exception.h:289
Definition exception.h:274
BadCast(const std::string &context)
Definition exception.h:275
virtual std::string typeinfo() const
Definition exception.h:279
~BadCast()
Definition exception.h:278
virtual std::string desc() const
Get a string describing what happened that threw the exception.
Definition exception.h:280
#define assert_eq(x, y)
Definition test.h:33