【发布时间】:2021-09-25 08:36:48
【问题描述】:
我想了解导致派生类PE 没有被second catch 捕获的程序中出了什么问题,并像我想要的那样显示错误。
同样,为了运行这个简单的例子,我必须纠正什么
class myEx
{
int errNum;
public:
myEx(int e) : errNum(e) {}
virtual void printErr() { cout << errNum << " "; }
};
class subEx : public myEx
{
string errDesc;
public:
subEx(int e, string d) : myEx(e), errDesc(d) {}
void printErr()
{
myEx::printErr();
cout << errDesc << " ";
}
};
int main()
{
try
{
myEx* pME = new subEx(0, "err 0");
throw pME;
}
catch (myEx* p)
{
p->printErr();
subEx PE(1, "err 1");
throw PE;
}
catch (subEx e)
{
e.printErr();
}
}
【问题讨论】:
-
为什么是
throwing 指针?为什么先按指针捕获,然后按值捕获? -
@Jarod42 这是我测试时必须理解的示例
标签: c++ pointers inheritance try-catch throw