X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/1555ef43eee251e5892a2f7fd49bc96e99d68fef..8f561fbf18e6995590fab6bc65e662e6797ff3fa:/include/xbt/ex.hpp diff --git a/include/xbt/ex.hpp b/include/xbt/ex.hpp index 1afc1bba74..de8c43dc0c 100644 --- a/include/xbt/ex.hpp +++ b/include/xbt/ex.hpp @@ -48,19 +48,46 @@ #include +/** A legacy exception + * + * It is defined by a category and a value within that category (as well as + * an optional error message). + * + * This used to be a structure for C exceptions but it has been retrofitted + * as a C++ exception and some of its data has been moved in the + * @ref WithContextException base class. We should deprecate it and replace it + * with either C++ different exceptions or `std::system_error` which already + * provides this (category + error code) logic. + * + * @ingroup XBT_ex_c + */ struct XBT_PUBLIC() xbt_ex : public std::runtime_error, public simgrid::xbt::WithContextException { public: - xbt_ex() : std::runtime_error("") {} - xbt_ex(const char* message) : std::runtime_error(message) {} + + xbt_ex() : + std::runtime_error("") + {} + + /** + * + * @param throwpoint Throw point (use XBT_THROW_POINT) + * @param message Exception message + */ + xbt_ex(simgrid::xbt::ThrowPoint throwpoint, const char* message) : + std::runtime_error(message), + simgrid::xbt::WithContextException(throwpoint, simgrid::xbt::backtrace()) + {} + ~xbt_ex() override; - xbt_errcat_t category; /**< category like HTTP (what went wrong) */ - int value; /**< like errno (why did it went wrong) */ - const char *file; /**< Thrown point */ - int line; /**< Thrown point */ - const char *func; /**< Thrown point */ + /** Category (what went wrong) */ + xbt_errcat_t category; + + /** Why did it went wrong */ + int value; + }; #endif