假设我有一些通用的Application类定义,其中包含:
class Application{
public:
void Run(){
try{
....
}catch(const Exception& ex){
....
}
}
现在假设我从App1类继承Application:
class App1: public Application{
void Run(){
Application::Run();
throw ex;
}
}
有没有办法在基类中捕获异常?我尝试了上述内容并且它无法正常工作。
答案 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()
已经完成运行。