对于下面的代码,结果是“EA Exception Finished”,这意味着虽然我们抛出了派生类,但它被基类捕获。总是这样吗?如果是这样,我怎样才能使派生类捕获,从而出现“EB Exception Finished”?
throw EB()
我也无法完全理解and是什么意思catch(EA&)
。是否catch(EA&)
意味着 catch 块获得 EA对象的引用?
对不起我的无知。如果您向我推荐一本书或有关异常结构的参考资料,那将有很大帮助。
class EA {};
class EB: public EA {};
void F()
{
throw EB(); // throw at EB().
}
int main()
{
try
{
F();
}
catch(EA&) // caught here??
{
std::cout<<"EA Exception";
}
catch(EB&) // why not me? every time?
{
std::cout<<"EB Exception";
}
std::cout<<" Finished"<<std::endl;
return 0;
}