50
45
ThrowBase (const ThrowBase&);
51
46
ThrowBase& operator= (const ThrowBase&);
48
friend class ThrowError;
49
friend class ThrowFatal;
54
/* final*/ class ThrowError : public ThrowBase
52
/* final*/ class ThrowError //: public ThrowBase
58
56
ThrowError (const char* file_,
61
int err_ = Exception::E_UNSPEC) throw()
59
int err_ = Exception::E_UNSPEC)
63
ThrowBase (file_, func_, line_),
61
base (file_, func_, line_),
67
~ThrowError () throw (Exception)
65
~ThrowError() GU_NORETURN
69
os << ": " << err << " (" << ::strerror(err) << ')';
71
Exception e(os.str(), err);
73
e.trace (file, func, line);
67
base.os << ": " << err << " (" << ::strerror(err) << ')';
69
Exception e(base.os.str(), err);
71
e.trace (base.file, base.func, base.line);
76
std::ostringstream& msg () { return base.os; }
83
/* final*/ class ThrowFatal : public ThrowBase
84
/* final*/ class ThrowFatal //: public ThrowBase
87
ThrowFatal (const char* file, const char* func, int line) throw()
88
ThrowFatal (const char* file, const char* func, int line)
89
ThrowBase (file, func, line)
90
base (file, func, line)
92
~ThrowFatal () throw (Exception)
93
~ThrowFatal () GU_NORETURN
96
Exception e(os.str(), Exception::E_NOTRECOVERABLE);
98
e.trace (file, func, line);
95
base.os << " (FATAL)";
97
Exception e(base.os.str(), Exception::E_NOTRECOVERABLE);
99
e.trace (base.file, base.func, base.line);
104
std::ostringstream& msg () { return base.os; }