捕获std :: exception和ERROR_STATUS

时间:2014-12-08 20:17:59

标签: c++ exception std

在我的代码中,我使用了我定义的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有一个接收错误值的构造函数,它可以解决它。

1 个答案:

答案 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
}