自定义C++异常类,代码如下:
#ifndef __MY_EXCEPTION_H__
#define __MY_EXCEPTION_H__
#define int Error_t
#include <exception>
#include <string>
/********************************************************************************
类名 : MyException
Description: MyException异常类,用来将Error_t转化为exception对象
*******************************************************************************/
class MyException : public std::exception
{
public:
MyException(Error_t err, const std::string& detail = "")
: m_err(err), m_strDetail(detail)
{
}
const char* what() const noexcept override
{
return m_strDetail.c_str();
}
Error_t code() const noexcept
{
return m_err;
}
private:
Error_t m_err = 0;
std::string m_strDetail;
};
#define CHECK_ERR(err) { \
auto _err = (err); \
if (_err != 0) { \
std::cout << __FILE__ << ":" << __LINE__ << " " << _err << std::endl; \
throw MyException{_err}; \
} \
}
#endif //__MY_EXCEPTION_H__