USRP Hardware Driver and USRP Manual  Version: 4.2.0.0-143-g2ad30980f
UHD and USRP Manual
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 #pragma once
9 
10 #include <uhd/config.hpp>
11 #include <stdexcept>
12 #include <string>
13 
31 namespace uhd {
32 
35 struct UHD_API exception : std::runtime_error
36 {
37  exception(const std::string& what);
38  virtual unsigned code(void) const = 0;
39  virtual exception* dynamic_clone(void) const = 0;
40  virtual void dynamic_throw(void) const = 0;
41 };
42 
48 {
49  assertion_error(const std::string& what);
50  unsigned code(void) const override;
51  assertion_error* dynamic_clone(void) const override;
52  void dynamic_throw(void) const override;
53 };
54 
59 {
60  lookup_error(const std::string& what);
61  unsigned code(void) const override;
62  lookup_error* dynamic_clone(void) const override;
63  void dynamic_throw(void) const override;
64 };
65 
69 {
70  index_error(const std::string& what);
71  unsigned code(void) const override;
72  index_error* dynamic_clone(void) const override;
73  void dynamic_throw(void) const override;
74 };
75 
82 {
83  key_error(const std::string& what);
84  unsigned code(void) const override;
85  key_error* dynamic_clone(void) const override;
86  void dynamic_throw(void) const override;
87 };
88 
96 {
97  type_error(const std::string& what);
98  unsigned code(void) const override;
99  type_error* dynamic_clone(void) const override;
100  void dynamic_throw(void) const override;
101 };
102 
108 {
109  value_error(const std::string& what);
110  unsigned code(void) const override;
111  value_error* dynamic_clone(void) const override;
112  void dynamic_throw(void) const override;
113 };
114 
121 {
122  narrowing_error(const std::string& what);
123  unsigned code(void) const override;
124  narrowing_error* dynamic_clone(void) const override;
125  void dynamic_throw(void) const override;
126 };
127 
132 {
133  runtime_error(const std::string& what);
134  unsigned code(void) const override;
135  runtime_error* dynamic_clone(void) const override;
136  void dynamic_throw(void) const override;
137 };
138 
142 {
143  int _code;
144  usb_error(int code, const std::string& what);
145  unsigned code(void) const override
146  {
147  return _code;
148  };
149  usb_error* dynamic_clone(void) const override;
150  void dynamic_throw(void) const override;
151 };
152 
157 {
158  not_implemented_error(const std::string& what);
159  unsigned code(void) const override;
160  not_implemented_error* dynamic_clone(void) const override;
161  void dynamic_throw(void) const override;
162 };
163 
168 {
169  access_error(const std::string& what);
170  unsigned code(void) const override;
171  access_error* dynamic_clone(void) const override;
172  void dynamic_throw(void) const override;
173 };
174 
178 {
179  environment_error(const std::string& what);
180  unsigned code(void) const override;
181  environment_error* dynamic_clone(void) const override;
182  void dynamic_throw(void) const override;
183 };
184 
188 {
189  io_error(const std::string& what);
190  unsigned code(void) const override;
191  io_error* dynamic_clone(void) const override;
192  void dynamic_throw(void) const override;
193 };
194 
198 {
199  os_error(const std::string& what);
200  unsigned code(void) const override;
201  os_error* dynamic_clone(void) const override;
202  void dynamic_throw(void) const override;
203 };
204 
208 {
209  system_error(const std::string& what);
210  unsigned code(void) const override;
211  system_error* dynamic_clone(void) const override;
212  void dynamic_throw(void) const override;
213 };
214 
220 {
221  syntax_error(const std::string& what);
222  unsigned code(void) const override;
223  syntax_error* dynamic_clone(void) const override;
224  void dynamic_throw(void) const override;
225 };
226 
230 {
231  rfnoc_error(const std::string& what);
232  unsigned code(void) const override;
233  rfnoc_error* dynamic_clone(void) const override;
234  void dynamic_throw(void) const override;
235 };
236 
240 {
241  op_failed(const std::string& what);
242  unsigned code(void) const override;
243  op_failed* dynamic_clone(void) const override;
244  void dynamic_throw(void) const override;
245 };
246 
251 {
252  op_timeout(const std::string& what);
253  unsigned code(void) const override;
254  op_timeout* dynamic_clone(void) const override;
255  void dynamic_throw(void) const override;
256 };
257 
261 {
262  op_seqerr(const std::string& what);
263  unsigned code(void) const override;
264  op_seqerr* dynamic_clone(void) const override;
265  void dynamic_throw(void) const override;
266 };
267 
271 {
272  op_timerr(const std::string& what);
273  unsigned code(void) const override;
274  op_timerr* dynamic_clone(void) const override;
275  void dynamic_throw(void) const override;
276 };
277 
281 {
282  resolve_error(const std::string& what);
283  unsigned code(void) const override;
284  resolve_error* dynamic_clone(void) const override;
285  void dynamic_throw(void) const override;
286 };
287 
291 {
292  routing_error(const std::string& what);
293  unsigned code(void) const override;
294  routing_error* dynamic_clone(void) const override;
295  void dynamic_throw(void) const override;
296 };
297 
304 #define UHD_THROW_SITE_INFO(what) \
305  std::string(std::string(what) + "\n" + " in " + std::string(UHD_FUNCTION) + "\n" \
306  + " at " + std::string(__FILE__) + ":" + BOOST_STRINGIZE(__LINE__) \
307  + "\n")
308 
313 #define UHD_THROW_INVALID_CODE_PATH() \
314  throw uhd::system_error(UHD_THROW_SITE_INFO("invalid code path"))
315 
321 #define UHD_ASSERT_THROW(code) \
322  { \
323  if (not(code)) \
324  throw uhd::assertion_error(UHD_THROW_SITE_INFO(#code)); \
325  }
326 
327 } // namespace uhd
Definition: exception.hpp:35
Definition: exception.hpp:177
Definition: exception.hpp:197
Definition: exception.hpp:156
Definition: exception.hpp:260
Definition: exception.hpp:58
Definition: exception.hpp:81
Definition: exception.hpp:229
Definition: exception.hpp:131
Definition: exception.hpp:207
Definition: exception.hpp:290
int _code
Definition: exception.hpp:143
Definition: exception.hpp:270
Definition: exception.hpp:107
Definition: exception.hpp:120
Definition: build_info.hpp:12
Definition: exception.hpp:167
unsigned code(void) const override
Definition: exception.hpp:145
Definition: exception.hpp:187
Definition: exception.hpp:239
Definition: exception.hpp:68
Definition: exception.hpp:219
Definition: exception.hpp:47
#define UHD_API
Definition: config.h:87
Definition: exception.hpp:280
Definition: exception.hpp:250
Definition: exception.hpp:95
Definition: exception.hpp:141