USRP Hardware Driver and USRP Manual  Version: 3.14.0.HEAD-0-gd20a7ae2
UHD and USRP Manual
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
exception.hpp
Go to the documentation of this file.
1 //
2 // Copyright 2010-2011 Ettus Research LLC
3 // Copyright 2018 Ettus Research, a National Instruments Company
4 //
5 // SPDX-License-Identifier: GPL-3.0-or-later
6 //
7 
8 #ifndef INCLUDED_UHD_EXCEPTION_HPP
9 #define INCLUDED_UHD_EXCEPTION_HPP
10 
11 #include <uhd/config.hpp>
12 #include <boost/current_function.hpp>
13 #include <stdexcept>
14 #include <string>
15 
33 namespace uhd{
34 
37  struct UHD_API exception : std::runtime_error{
38  exception(const std::string &what);
39  virtual unsigned code(void) const = 0;
40  virtual exception *dynamic_clone(void) const = 0;
41  virtual void dynamic_throw(void) const = 0;
42  };
43 
49  assertion_error(const std::string &what);
50  virtual unsigned code(void) const;
51  virtual assertion_error *dynamic_clone(void) const;
52  virtual void dynamic_throw(void) const;
53  };
54 
59  lookup_error(const std::string &what);
60  virtual unsigned code(void) const;
61  virtual lookup_error *dynamic_clone(void) const;
62  virtual void dynamic_throw(void) const;
63  };
64 
68  index_error(const std::string &what);
69  virtual unsigned code(void) const;
70  virtual index_error *dynamic_clone(void) const;
71  virtual void dynamic_throw(void) const;
72  };
73 
80  key_error(const std::string &what);
81  virtual unsigned code(void) const;
82  virtual key_error *dynamic_clone(void) const;
83  virtual void dynamic_throw(void) const;
84  };
85 
93  type_error(const std::string &what);
94  virtual unsigned code(void) const;
95  virtual type_error *dynamic_clone(void) const;
96  virtual void dynamic_throw(void) const;
97  };
98 
104  value_error(const std::string &what);
105  virtual unsigned code(void) const;
106  virtual value_error *dynamic_clone(void) const;
107  virtual void dynamic_throw(void) const;
108  };
109 
116  narrowing_error(const std::string &what);
117  virtual unsigned code(void) const;
118  virtual narrowing_error *dynamic_clone(void) const;
119  virtual void dynamic_throw(void) const;
120  };
121 
126  runtime_error(const std::string &what);
127  virtual unsigned code(void) const;
128  virtual runtime_error *dynamic_clone(void) const;
129  virtual void dynamic_throw(void) const;
130  };
131 
135  int _code;
136  usb_error(int code, const std::string &what);
137  virtual unsigned code(void) const { return _code; };
138  virtual usb_error *dynamic_clone(void) const;
139  virtual void dynamic_throw(void) const;
140  };
141 
146  not_implemented_error(const std::string &what);
147  virtual unsigned code(void) const;
148  virtual not_implemented_error *dynamic_clone(void) const;
149  virtual void dynamic_throw(void) const;
150  };
151 
155  environment_error(const std::string &what);
156  virtual unsigned code(void) const;
157  virtual environment_error *dynamic_clone(void) const;
158  virtual void dynamic_throw(void) const;
159  };
160 
164  io_error(const std::string &what);
165  virtual unsigned code(void) const;
166  virtual io_error *dynamic_clone(void) const;
167  virtual void dynamic_throw(void) const;
168  };
169 
173  os_error(const std::string &what);
174  virtual unsigned code(void) const;
175  virtual os_error *dynamic_clone(void) const;
176  virtual void dynamic_throw(void) const;
177  };
178 
182  system_error(const std::string &what);
183  virtual unsigned code(void) const;
184  virtual system_error *dynamic_clone(void) const;
185  virtual void dynamic_throw(void) const;
186  };
187 
193  syntax_error(const std::string &what);
194  virtual unsigned code(void) const;
195  virtual syntax_error *dynamic_clone(void) const;
196  virtual void dynamic_throw(void) const;
197  };
198 
205  #define UHD_THROW_SITE_INFO(what) std::string( \
206  std::string(what) + "\n" + \
207  " in " + std::string(BOOST_CURRENT_FUNCTION) + "\n" + \
208  " at " + std::string(__FILE__) + ":" + BOOST_STRINGIZE(__LINE__) + "\n" \
209  )
210 
215  #define UHD_THROW_INVALID_CODE_PATH() \
216  throw uhd::system_error(UHD_THROW_SITE_INFO("invalid code path"))
217 
223  #define UHD_ASSERT_THROW(code) {if (not (code)) \
224  throw uhd::assertion_error(UHD_THROW_SITE_INFO(#code)); \
225  }
226 
227 } //namespace uhd
228 
229 #endif /* INCLUDED_UHD_EXCEPTION_HPP */
Definition: exception.hpp:37
Definition: exception.hpp:154
Definition: exception.hpp:172
Definition: exception.hpp:145
Definition: exception.hpp:58
Definition: exception.hpp:79
Definition: exception.hpp:125
Definition: exception.hpp:181
int _code
Definition: exception.hpp:135
Definition: exception.hpp:103
Definition: exception.hpp:115
Definition: build_info.hpp:14
Definition: exception.hpp:163
Definition: exception.hpp:67
Definition: exception.hpp:192
Definition: exception.hpp:48
#define UHD_API
Definition: config.h:68
virtual unsigned code(void) const
Definition: exception.hpp:137
Definition: exception.hpp:92
Definition: exception.hpp:134