LSST Applications g0b6bd0c080+a72a5dd7e6,g1182afd7b4+2a019aa3bb,g17e5ecfddb+2b8207f7de,g1d67935e3f+06cf436103,g38293774b4+ac198e9f13,g396055baef+6a2097e274,g3b44f30a73+6611e0205b,g480783c3b1+98f8679e14,g48ccf36440+89c08d0516,g4b93dc025c+98f8679e14,g5c4744a4d9+a302e8c7f0,g613e996a0d+e1c447f2e0,g6c8d09e9e7+25247a063c,g7271f0639c+98f8679e14,g7a9cd813b8+124095ede6,g9d27549199+a302e8c7f0,ga1cf026fa3+ac198e9f13,ga32aa97882+7403ac30ac,ga786bb30fb+7a139211af,gaa63f70f4e+9994eb9896,gabf319e997+ade567573c,gba47b54d5d+94dc90c3ea,gbec6a3398f+06cf436103,gc6308e37c7+07dd123edb,gc655b1545f+ade567573c,gcc9029db3c+ab229f5caf,gd01420fc67+06cf436103,gd877ba84e5+06cf436103,gdb4cecd868+6f279b5b48,ge2d134c3d5+cc4dbb2e3f,ge448b5faa6+86d1ceac1d,gecc7e12556+98f8679e14,gf3ee170dca+25247a063c,gf4ac96e456+ade567573c,gf9f5ea5b4d+ac198e9f13,gff490e6085+8c2580be5c,w.2022.27
LSST Data Management Base Package
Namespaces | Classes | Typedefs | Functions
lsst::pex::exceptions Namespace Reference

Namespaces

namespace  python
 
namespace  version
 
namespace  wrappers
 

Classes

class  DomainError
 Reports arguments outside the domain of an operation. More...
 
class  Exception
 Provides consistent interface for LSST exceptions. More...
 
class  InvalidParameterError
 Reports invalid arguments. More...
 
class  IoError
 Reports errors in external input/output operations. More...
 
class  LengthError
 Reports attempts to exceed implementation-defined length limits for some classes. More...
 
class  LogicError
 Reports errors in the logical structure of the program. More...
 
class  NotFoundError
 Reports attempts to access elements using an invalid key. More...
 
class  OutOfRangeError
 Reports attempts to access elements outside a valid range of indices. More...
 
class  OverflowError
 Reports when the result of an arithmetic operation is too large for the destination type. More...
 
class  RangeError
 Reports when the result of an operation cannot be represented by the destination type. More...
 
class  RuntimeError
 Reports errors that are due to events beyond the control of the program. More...
 
struct  Tracepoint
 One point in the Traceback vector held by Exception. More...
 
class  TypeError
 Reports errors from accepting an object of an unexpected or inappropriate type. More...
 
class  UnderflowError
 Reports when the result of an arithmetic operation is too small for the destination type. More...
 

Typedefs

typedef std::vector< TracepointTraceback
 

Functions

std::ostreamoperator<< (std::ostream &stream, Exception const &e)
 Push the text representation of an exception onto a stream. More...
 
 PYBIND11_MODULE (exceptions, mod)
 

Typedef Documentation

◆ Traceback

Definition at line 95 of file Exception.h.

Function Documentation

◆ operator<<()

std::ostream & lsst::pex::exceptions::operator<< ( std::ostream stream,
Exception const &  e 
)

Push the text representation of an exception onto a stream.

Parameters
[in]streamReference to an output stream.
[in]eException to output.
Returns
Reference to the output stream after adding the text.

Definition at line 105 of file Exception.cc.

105{ return e.addToStream(stream); }

◆ PYBIND11_MODULE()

lsst::pex::exceptions::PYBIND11_MODULE ( exceptions  ,
mod   
)

Definition at line 90 of file exceptions.cc.

90 {
91 py::class_<Tracepoint> clsTracepoint(mod, "Tracepoint");
92
93 clsTracepoint.def(py::init<char const *, int, char const *, std::string const &>())
94 .def_readwrite("_file", &Tracepoint::_file)
95 .def_readwrite("_line", &Tracepoint::_line)
96 .def_readwrite("_func", &Tracepoint::_func)
97 .def_readwrite("_message", &Tracepoint::_message);
98
99 py::class_<Exception> clsException(mod, "Exception");
100
101 clsException.def(py::init<std::string const &>())
102 .def("addMessage", &Exception::addMessage)
103 .def("getTraceback", &Exception::getTraceback)
104 .def("addToStream", &Exception::addToStream)
105 .def("what", &Exception::what)
106 .def("getType", &Exception::getType)
107 .def("clone", &Exception::clone)
108 .def("asString",
109 [](Exception &self) -> std::string {
110 std::ostringstream stream;
111 self.addToStream(stream);
112 return stream.str();
113 })
114 .def("__repr__", [](Exception &self) -> std::string {
116 s << "Exception('" << self.what() << "')";
117 return s.str();
118 });
119
120 py::class_<LogicError, Exception> clsLogicError(mod, "LogicError");
121 clsLogicError.def(py::init<std::string const &>());
122
123 py::class_<NotFoundError, Exception> clsNotFoundError(mod, "NotFoundError");
124 clsNotFoundError.def(py::init<std::string const &>());
125
126 py::class_<RuntimeError, Exception> clsRuntimeError(mod, "RuntimeError");
127 clsRuntimeError.def(py::init<std::string const &>());
128
129 py::class_<IoError, RuntimeError> clsIoError(mod, "IoError");
130 clsIoError.def(py::init<std::string const &>());
131
132 py::class_<OverflowError, RuntimeError> clsOverflowError(mod, "OverflowError");
133 clsOverflowError.def(py::init<std::string const &>());
134
135 py::class_<RangeError, RuntimeError> clsRangeError(mod, "RangeError");
136 clsRangeError.def(py::init<std::string const &>());
137
138 py::class_<TypeError, LogicError> clsTypeError(mod, "TypeError");
139 clsTypeError.def(py::init<std::string const &>());
140
141 py::class_<UnderflowError, RuntimeError> clsUnderflowError(mod, "UnderflowError");
142 clsUnderflowError.def(py::init<std::string const &>());
143
144 py::class_<DomainError, LogicError> clsDomainError(mod, "DomainError");
145 clsDomainError.def(py::init<std::string const &>());
146
147 py::class_<InvalidParameterError, LogicError> clsInvalidParameterError(mod, "InvalidParameterError");
148 clsInvalidParameterError.def(py::init<std::string const &>());
149
150 py::class_<LengthError, LogicError> clsLengthError(mod, "LengthError");
151 clsLengthError.def(py::init<std::string const &>());
152
153 py::class_<OutOfRangeError, LogicError> clsOutOfRangeError(mod, "OutOfRangeError");
154 clsOutOfRangeError.def(py::init<std::string const &>());
155
156 py::register_exception_translator([](std::exception_ptr p) {
157 try {
158 if (p) std::rethrow_exception(p);
159 } catch (const Exception &e) {
160 py::object current_exception;
161 current_exception = py::cast(e.clone(), py::return_value_policy::take_ownership);
162 raiseLsstException(current_exception);
163 }
164 });
165}
Provides consistent interface for LSST exceptions.
Definition: Exception.h:107
virtual Exception * clone(void) const
Return a copy of the exception as an Exception pointer.
Definition: Exception.cc:103
T rethrow_exception(T... args)
T str(T... args)