CoolProp
8.0.0
An open-source fluid property and humid air property database
include
CoolProp
Exceptions.h
Go to the documentation of this file.
1
2
3
#ifndef CPEXCEPTIONS_H
4
#define CPEXCEPTIONS_H
5
6
#include <exception>
7
#include <string>
8
9
namespace
CoolProp
{
10
11
class
CoolPropBaseError
:
public
std::exception
12
{
13
public
:
14
enum
ErrCode
15
{
16
eNotImplemented
,
17
eSolution
,
18
eAttribute
,
19
eOutOfRange
,
20
eValue
,
21
eWrongFluid
,
22
eComposition
,
23
eInput
,
24
eNotAvailable
,
25
eHandle
,
26
eKey
,
27
eUnableToLoad
,
28
eDirectorySize
,
29
eMultipleSolutions
30
};
31
CoolPropBaseError
(
const
std::string& err,
ErrCode
code
)
throw
() : m_code(
code
), m_err(err) {}
32
~CoolPropBaseError
() throw() = default;
33
const
char
*
what
() const throw()
override
{
34
return
m_err.c_str();
35
}
36
ErrCode
code
() {
37
return
m_code;
38
}
39
40
private
:
41
ErrCode
m_code;
42
std::string m_err;
43
};
44
45
template
<CoolPropBaseError::ErrCode errcode>
46
class
CoolPropError
:
public
CoolPropBaseError
47
{
48
public
:
49
CoolPropError
(
const
std::string& err =
""
,
ErrCode
ecode = errcode)
throw
() :
CoolPropBaseError
(err, ecode) {}
50
};
51
52
using
NotImplementedError
=
CoolPropError<CoolPropBaseError::eNotImplemented>
;
53
using
SolutionError
=
CoolPropError<CoolPropBaseError::eSolution>
;
54
using
AttributeError
=
CoolPropError<CoolPropBaseError::eAttribute>
;
55
using
OutOfRangeError
=
CoolPropError<CoolPropBaseError::eOutOfRange>
;
56
using
ValueError
=
CoolPropError<CoolPropBaseError::eValue>
;
57
using
KeyError
=
CoolPropError<CoolPropBaseError::eKey>
;
58
using
HandleError
=
CoolPropError<CoolPropBaseError::eHandle>
;
59
using
UnableToLoadError
=
CoolPropError<CoolPropBaseError::eUnableToLoad>
;
60
using
DirectorySizeError
=
CoolPropError<CoolPropBaseError::eDirectorySize>
;
61
62
// ValueError specializations
63
template
<CoolPropBaseError::ErrCode errcode>
64
class
ValueErrorSpec
:
public
ValueError
65
{
66
public
:
67
ValueErrorSpec
(
const
std::string& err =
""
,
ErrCode
ecode = errcode)
throw
() :
ValueError
(err, ecode) {}
68
};
69
70
using
WrongFluidError
=
ValueErrorSpec<CoolPropBaseError::eWrongFluid>
;
71
using
CompositionError
=
ValueErrorSpec<CoolPropBaseError::eComposition>
;
72
using
InputError
=
ValueErrorSpec<CoolPropBaseError::eInput>
;
73
using
NotAvailableError
=
ValueErrorSpec<CoolPropBaseError::eNotAvailable>
;
78
using
MultipleSolutionsError
=
ValueErrorSpec<CoolPropBaseError::eMultipleSolutions>
;
79
80
};
/* namespace CoolProp */
81
#endif
Generated by
1.9.4