libcommonc++  0.7
Exception.h++
Go to the documentation of this file.
1 /* ---------------------------------------------------------------------------
2  commonc++ - A C++ Common Class Library
3  Copyright (C) 2005-2014 Mark A Lindner
4 
5  This file is part of commonc++.
6 
7  This library is free software; you can redistribute it and/or
8  modify it under the terms of the GNU Library General Public
9  License as published by the Free Software Foundation; either
10  version 2 of the License, or (at your option) any later version.
11 
12  This library is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  Library General Public License for more details.
16 
17  You should have received a copy of the GNU Library General Public
18  License along with this library; if not, write to the Free
19  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20  ---------------------------------------------------------------------------
21 */
22 
23 #ifndef __ccxx_Exception_hxx
24 #define __ccxx_Exception_hxx
25 
26 #include <commonc++/String.h++>
27 
28 #include <exception>
29 #include <iostream>
30 #include <sstream>
31 
32 namespace ccxx {
33 
39 class COMMONCPP_API Exception : public std::exception
40 {
41  public:
42 
44  Exception(String message = String::empty);
45 
47  virtual ~Exception() throw()
48  { }
49 
51  inline String getMessage() const
52  { return(_message); }
53 
55  virtual const char* what() const throw();
56 
58  inline virtual void write(std::ostream& stream) const
59  { _write(stream, "Exception"); }
60 
62  inline String toString() const
63  {
64  std::ostringstream ss;
65  write(ss);
66  return String(ss.str().c_str());
67  }
68 
69  protected:
70 
72  void _write(std::ostream& stream, const char* name) const;
77  mutable CString _what;
78 };
79 
81 inline std::ostream& operator<<(std::ostream& stream, const Exception& ex)
82 {
83  ex.write(stream);
84  return(stream);
85 }
86 
87 } // namespace ccxx
88 
89 #endif // __ccxx_Exception_hxx
static const String empty
The empty string.
Definition: String.h++:1134
String getMessage() const
Get the message associated with the exception.
Definition: Exception.h++:51
String _message
The cause message.
Definition: Exception.h++:76
virtual ~Exception()
Destructor.
Definition: Exception.h++:47
std::ostream & operator<<(std::ostream &stream, const BitSet &bs)
Definition: BitSet.h++:383
CString _what
Definition: Exception.h++:77
#define COMMONCPP_API
Definition: Common.h++:126
A flexible, reference counted, copy-on-write, thread-safe, nullable string.
Definition: String.h++:50
An implicitly shared, reference-counted container for an immutable, NUL-terminated C string...
Definition: CString.h++:39
Definition: AllocationMap.c++:25
virtual void write(std::ostream &stream) const
Write a textual representation of the exception to a stream.
Definition: Exception.h++:58
A general-purpose exception.
Definition: Exception.h++:39
String toString() const
Get a textual representation of the exception as a String.
Definition: Exception.h++:62