当谈到C++ std:异常处理时,我非常担心。以下是我在网上找到的一些示例代码,我目前使用它。自动添加前缀到自定义异常
class MyBaseException : public std::exception
{
public:
explicit MyBaseException(const std::string & message)
: m_Base(message.c_cstr()) {}
explicit MyBaseException(const char *message)
: m_Base(message) {}
virtual ~MyBaseException() throw() {}
protected:
typedef std::exception m_Base;
};
class MyDerivedException : public MyBaseException
{
public:
explicit MyDerivedException (const std::string & message)
: m_Base(message.c_cstr()) {}
explicit MyDerivedException (const char *message)
: m_Base(message) {}
virtual ~MyDerivedException() throw() {}
protected:
typedef MyBaseException m_Base;
};
现在,我想要做的就是自动预先安排下列方案引发的每个异常。
一些代码中引发了以下配置的MyDerivedException例外: “original_exception_message”
当MyDerivedException收到 “original_exception_message”,我想用加前缀: “派生发生异常:”
当MyBaseException异常收到MyDerivedException异常时,我想在它前面加上: “异常提升:”
这样最终的消息看起来像这样:
“基地发生异常:衍生发生异常:original_exception_message”
我得感觉,我会得到各种关于这个讨厌的回复,不好的观念和陋习的......但我不自称是一位专家。
请注意,prepend消息实际上并非如此。他们会更有信息。
在此先感谢。
“我得感觉我会就在这种种讨厌的答复,不好的观念和陋习”你知道这个C++社区太清楚了:-) 。好的问题,但是,得到很好的回应! – AndyG
我错过了什么,或者你是否声明了两次相同的构造函数? ('const char * message') – lcs
你有重复的构造函数 - 上面的代码将无法编译。 –