我在代码的catch部分有一个宏,比如说
#define CATCH( doSomething ) \
catch (MyException& e) \
{ \
try \
{ \
doSomething; \
} \
} \
catch (MyException* e) \
{ \
try \
{ \
doSomething; \
} \
}
在doSomething部分中,我需要获取异常的内容,有办法可以做到吗?是否有一种类似这样使用的函数isPointer:
try
{
THROW(new MyException());
}
CATCH( \
if( isPointer(e) ) \
{ \
std::cout << (*e).toString(); \
} \
else \
{ \
std::cout << e.toString(); \
} \
)
new
没有任何好处;通过引用捕获允许您获得多态行为。 - Karl Knechtelthrow new MyException
,而另一个人可能会throw &static_exception
。首先,您真的不应该抛出指针。 - Mike Seymour