OpenVDB
13.0.0
Toggle main menu visibility
Loading...
Searching...
No Matches
Exceptions.h
Go to the documentation of this file.
1
// Copyright Contributors to the OpenVDB Project
2
// SPDX-License-Identifier: Apache-2.0
3
4
#ifndef OPENVDB_EXCEPTIONS_HAS_BEEN_INCLUDED
5
#define OPENVDB_EXCEPTIONS_HAS_BEEN_INCLUDED
6
7
#include "version.h"
8
#include <exception>
9
#include <sstream>
10
#include <string>
11
12
13
namespace
openvdb
{
14
OPENVDB_USE_VERSION_NAMESPACE
15
namespace
OPENVDB_VERSION_NAME
{
16
17
class
OPENVDB_API
Exception
:
public
std::exception
18
{
19
public
:
20
Exception
(
const
Exception
&) =
default
;
21
Exception
(
Exception
&&) =
default
;
22
Exception
&
operator=
(
const
Exception
&) =
default
;
23
Exception
&
operator=
(
Exception
&&) =
default
;
24
~Exception
()
override
=
default
;
25
26
const
char
*
what
() const noexcept
override
27
{
28
try
{
return
mMessage.c_str(); }
catch
(...) {}
29
return
nullptr
;
30
}
31
32
protected
:
33
Exception
() noexcept {}
34
explicit
Exception
(
const
char
* eType,
const
std::string*
const
msg =
nullptr
) noexcept
35
{
36
try
{
37
if
(eType) mMessage = eType;
38
if
(msg) mMessage +=
": "
+ (*msg);
39
}
catch
(...) {}
40
}
41
42
private
:
43
std::string mMessage;
44
};
45
46
47
#define OPENVDB_EXCEPTION(_classname) \
48
class OPENVDB_API _classname: public Exception \
49
{ \
50
public: \
51
_classname() noexcept: Exception( #_classname ) {} \
52
explicit _classname(const std::string& msg) noexcept: Exception( #_classname , &msg) {} \
53
}
54
55
56
OPENVDB_EXCEPTION
(
ArithmeticError
);
57
OPENVDB_EXCEPTION
(
IndexError
);
58
OPENVDB_EXCEPTION
(
IoError
);
59
OPENVDB_EXCEPTION
(
KeyError
);
60
OPENVDB_EXCEPTION
(
LookupError
);
61
OPENVDB_EXCEPTION
(
NotImplementedError
);
62
OPENVDB_EXCEPTION
(
ReferenceError
);
63
OPENVDB_EXCEPTION
(
RuntimeError
);
64
OPENVDB_EXCEPTION
(
TypeError
);
65
OPENVDB_EXCEPTION
(
ValueError
);
66
67
#undef OPENVDB_EXCEPTION
68
69
70
}
// namespace OPENVDB_VERSION_NAME
71
}
// namespace openvdb
72
73
74
#define OPENVDB_THROW(exception, message) \
75
{ \
76
std::string _openvdb_throw_msg; \
77
try { \
78
std::ostringstream _openvdb_throw_os; \
79
_openvdb_throw_os << message; \
80
_openvdb_throw_msg = _openvdb_throw_os.str(); \
81
} catch (...) {} \
82
throw exception(_openvdb_throw_msg); \
83
}
// OPENVDB_THROW
84
85
#endif
// OPENVDB_EXCEPTIONS_HAS_BEEN_INCLUDED
OPENVDB_API
#define OPENVDB_API
Definition
Platform.h:291
openvdb::v13_0::ArithmeticError::ArithmeticError
ArithmeticError() noexcept
Definition
Exceptions.h:56
openvdb::v13_0::Exception::Exception
Exception() noexcept
Definition
Exceptions.h:33
openvdb::v13_0::Exception::Exception
Exception(const char *eType, const std::string *const msg=nullptr) noexcept
Definition
Exceptions.h:34
openvdb::v13_0::Exception::Exception
Exception(Exception &&)=default
openvdb::v13_0::Exception::operator=
Exception & operator=(const Exception &)=default
openvdb::v13_0::Exception::what
const char * what() const noexcept override
Definition
Exceptions.h:26
openvdb::v13_0::Exception::operator=
Exception & operator=(Exception &&)=default
openvdb::v13_0::Exception::Exception
Exception(const Exception &)=default
openvdb::v13_0::Exception::~Exception
~Exception() override=default
openvdb::v13_0::IndexError::IndexError
IndexError() noexcept
Definition
Exceptions.h:57
openvdb::v13_0::IoError::IoError
IoError() noexcept
Definition
Exceptions.h:58
openvdb::v13_0::KeyError::KeyError
KeyError() noexcept
Definition
Exceptions.h:59
openvdb::v13_0::LookupError::LookupError
LookupError() noexcept
Definition
Exceptions.h:60
openvdb::v13_0::NotImplementedError::NotImplementedError
NotImplementedError() noexcept
Definition
Exceptions.h:61
openvdb::v13_0::ReferenceError::ReferenceError
ReferenceError() noexcept
Definition
Exceptions.h:62
openvdb::v13_0::RuntimeError::RuntimeError
RuntimeError() noexcept
Definition
Exceptions.h:63
openvdb::v13_0::TypeError::TypeError
TypeError() noexcept
Definition
Exceptions.h:64
openvdb::v13_0::ValueError::ValueError
ValueError() noexcept
Definition
Exceptions.h:65
openvdb
Definition
Exceptions.h:13
OPENVDB_EXCEPTION
#define OPENVDB_EXCEPTION(_classname)
Definition
Exceptions.h:47
OPENVDB_VERSION_NAME
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Definition
version.h.in:121
OPENVDB_USE_VERSION_NAMESPACE
#define OPENVDB_USE_VERSION_NAMESPACE
Definition
version.h.in:218
openvdb
Exceptions.h
Generated by
1.18.0