LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
Namespaces | Classes | Typedefs | Functions
lsst::pex::exceptions Namespace Reference

Namespaces

 python
 
 version
 
 wrappers
 

Classes

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