boost system
boost::system::error_code is the most basic class in Boost.System; it represents operating system-specific errors. Because operating systems typically enumerate errors,boost::system::error_code saves an error code in a variable of type int. 1. error_code include <boost/system/error_code.hpp> #include <iostream> using namespace boost::system; void fail(error_code &ec) { ec = errc::make_error_code(errc::not_supported); } int main() { error_code ec; fail(ec); std::cout << ec.value() << std::endl; boost::system::errc::not_supported is a number and ec is an object of type boost::system::error_code,the function boost::system::errc::make_error_code() is called. This function creates an object of type boost::system::error_code with the respective error code. value() member function returns the error code stored in the object. Error codes of type 2. creating error category #include <boost/system/error_code.hpp> #include <string> #include <iostream> class application_category : public boost::system::error_category { public: const char *name() const noexcept { return "my app"; } std::string message(int ev) const { return "error message"; } }; application_category cat; int main() { boost::system::error_code ec(129,cat); std::cout << ec.value() << std::endl; std::cout << ec.category().name() << std::endl; return 0; } A new error category is defined by creating a class derived from boost::system::error_category. This requires you to define various member functions. At a minimum,the member functions name() and message() must be supplied because they are defined as pure virtual member functions in boost::system::error_category. While name() returns the name of the error category,message() is used to retrieve the error description for a particular error code. 3. error_condition #include <boost/system/error_code.hpp> #include <iostream> using namespace boost::system; void fail(error_code &ec) { ec = errc::make_error_code(errc::not_supported); } int main() { error_code ec; fail(ec); boost::system::error_condition ecnd = ec.default_error_condition(); std::cout << ecnd.value() << std::endl; std::cout << ecnd.category().name() << std::endl; return 0; } boost::system::error_condition is used just like boost::system::error_code. While the class (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |