在我的代码中,我使用了我定义的BasicException
enum class MyError {
ERROR_1,
ERROR_2
};
class BasicException
{
public:
BasicException(MyError err): _err(err) {}
get_error() const {return _err;}
private:
MyError _err;
}
问题是我被告知BasicException应该从std :: exception继承。但是,当我将捕获(const std :: exception& e)时,我无法检索特定错误的MyError。那有什么好处呢?
我不确定什么是最佳解决方案 - 但是如果std :: exception有一个接收错误值的构造函数,它可以解决它。
答案 0 :(得分:0)
如果你想特别抓住BasicException
,请先按照以下方式抓住它:
try
{
}
catch( BasicException& be )
{
// your exception here
}
catch( std::exception& e )
{
// other exceptions here
}
如果您想要捕获包括您的所有异常(如果BasicException
继承std::exception
),那么:
try
{
}
catch( std::exception& e )
{
// all exceptions here
}