X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/1555ef43eee251e5892a2f7fd49bc96e99d68fef..6d1fc1c31cb2152b6d20742081118524dbb78d14:/include/xbt/ex.hpp diff --git a/include/xbt/ex.hpp b/include/xbt/ex.hpp index 1afc1bba74..882f15b2d7 100644 --- a/include/xbt/ex.hpp +++ b/include/xbt/ex.hpp @@ -48,19 +48,45 @@ #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() override; + std::runtime_error, + simgrid::xbt::WithContextException { + + 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()) + {} + + virtual ~xbt_ex() = default; + + /** Category (what went wrong) */ + xbt_errcat_t category = unknown_error; + + /** Why did it went wrong */ + int value = 0; - 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 */ }; #endif