基类中的C ++异常处理

时间:2014-03-12 04:36:08

标签: c++ inheritance exception-handling

假设我有一些通用的Application类定义,其中包含:

class Application{
    public:
    void Run(){
        try{
            ....
        }catch(const Exception& ex){
            ....
        }
}

现在假设我从App1类继承Application:

class App1: public Application{
    void Run(){
        Application::Run();
        throw ex;
    }
}

有没有办法在基类中捕获异常?我尝试了上述内容并且它无法正常工作。

2 个答案:

答案 0 :(得分:2)

使用虚拟功能,如下所示:

    class Application{
    public:
    virtual void DoRun() {
    ....
    }
    void Run(){
        try{
            DoRun();
        }catch(const Exception& ex){
            ....
        }
}

class App1: public Application{
    virtual void DoRun() {
        Application::DoRun();
        throw ex;
    }
}

答案 1 :(得分:0)

不,你不能。当您throw ex; App1:Run()时,Application::Run()已经完成运行。