【发布时间】:2013-05-01 20:16:40
【问题描述】:
鉴于此代码,其中A 位于第 3 方库中,B 是我编写的代码:
class A {...};
class B { public: B( const A &a ); ... };
try
{
A a(...);
throw a;
}
catch ( const B &b )
{
// ...do stuff with B, like log the details to a file...
}
如果一个对象A 被抛出,那么我的catch B 将被跳过。我希望 B 有一个接受 A 对象的构造函数,这可能会起作用。
我可以做些什么来完成这项工作,还是我必须修改所有 catch 子句以处理同时捕获 A 和 B?
【问题讨论】:
-
能否将 B 设为 A 的派生类,然后将
catch (const A&) {...}改为无处不在?