有人可以解释一下以下代码中异常处理的顺序是如何发生的吗?它是如何评估的
“~B() 调用了 D() 中 D()Exception 的函数 try 块的处理程序”
#include "stdafx.h"
#include <iostream>
using namespace std;
class E {
public:
const char* error;
E(const char* arg): error(arg) {}
};
class B {
public:
B() {};
~B(){cout<<"~B() called"<<endl;}
};
class D: public B {
public:
D();
~D() { cout<<"~D() called"<<endl; }
};
D::D() try :B(){
throw E("Exception in D");
} catch(E&e)
{
cout<<"Handler of function try block of D()"<<e.error<<endl;
};
int main()
{
try {
D val;
}catch(...) {}
}