]> git.llucax.com Git - software/posixx.git/blob - src/error.hpp
89ac57609a32b8b256d911350bfdd2e835d87823
[software/posixx.git] / src / error.hpp
1 #ifndef POSIXX_ERROR_HPP_
2 #define POSIXX_ERROR_HPP_
3
4 #include <cstring>
5 #include <stdexcept>
6 #include <cerrno>
7 #include <string>
8
9 /// @file
10
11 namespace posixx {
12
13 /// Posix error.
14 struct error: std::runtime_error
15 {
16
17         /// Default constructor, gets the error number and string from errno.
18         error() throw();
19
20         /**
21          * Constructor with a more detailed message.
22          *
23          * @param where Description about where the error was thrown.
24          */
25         explicit error(const std::string& where) throw ();
26
27         /// Destructor
28         ~error() throw();
29
30         /// Error number, as of errno.
31         int no;
32
33 };
34
35 } // namespace posixx
36
37
38 inline
39 posixx::error::error() throw():
40     std::runtime_error(strerror(errno)), no(errno)
41 {
42 }
43
44 inline
45 posixx::error::error(const std::string& where) throw ():
46     std::runtime_error(where + ": " + strerror(errno)), no(errno)
47 {
48 }
49
50 inline
51 posixx::error::~error() throw ()
52 {
53 }
54
55 #endif // POSIXX_ERROR_HPP_