Updating Patrick's C++ exceptions to build without warnings on solaris.
[m6w6/libmemcached] / libmemcached / exception.hpp
1 /*
2 * Summary: Exceptions for the C++ interface
3 *
4 * Copy: See Copyright for the status of this software.
5 *
6 */
7
8 /**
9 * @file
10 * @brief Exception declarations
11 */
12
13 #ifndef LIBMEMACHED_EXCEPTION_HPP
14 #define LIBMEMACHED_EXCEPTION_HPP
15
16 #include <stdexcept>
17 #include <string>
18
19 namespace memcache
20 {
21 class Exception : public std::runtime_error
22 {
23 public:
24 Exception(const std::string& msg, int in_errno)
25 :
26 std::runtime_error(msg),
27 _errno(in_errno)
28 {}
29
30 Exception(const char *msg, int in_errno)
31 :
32 std::runtime_error(string(msg)),
33 _errno(in_errno) {}
34
35 virtual ~Exception() throw() {}
36
37 int getErrno() const
38 {
39 return _errno;
40 }
41
42 private:
43 int _errno;
44 };
45
46 class Warning : public Exception
47 {
48 public:
49 Warning(const std::string& msg, int in_errno) : Exception(msg, in_errno) {}
50 Warning(const char *msg, int in_errno) : Exception(msg, in_errno) {}
51 };
52
53 class Error : public Exception
54 {
55 public:
56 Error(const std::string& msg, int in_errno) : Exception(msg, in_errno) {}
57 Error(const char *msg, int in_errno) : Exception(msg, in_errno) {}
58 virtual ~Error() throw() {}
59 };
60
61 } /* namespace libmemcached */
62
63 #endif /* LIBMEMACHED_EXCEPTION_HPP */