90 {
91 py::class_<Tracepoint> clsTracepoint(mod, "Tracepoint");
92
93 clsTracepoint.def(py::init<char const *, int, char const *, std::string const &>())
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",
113 })
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
157 try {
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.
virtual char const * what(void) const noexcept
Return a character string summarizing this exception.
virtual Exception * clone(void) const
Return a copy of the exception as an Exception pointer.
virtual std::ostream & addToStream(std::ostream &stream) const
Add a text representation of this exception, including its traceback with messages,...
T rethrow_exception(T... args)