Jos*_*Fox 6 c++ exception visual-studio
可能重复:
捕获异常后确定异常类型?
关注这个问题,我想在catch(...)块中打印出当前的异常- 只是为了记录.有一个答案说没有标准的方法可以做到这一点,但我不喜欢不回答:-)
current_exception()是在网络上的各个地方提到的功能,但显然不是很好的支持.有什么想法吗?毕竟,即使C也有错误.
因为它可以被重新抛出(使用简单的**throw*),异常对象必须以某种方式可用.
我正在使用MSVS 9.0.
编辑:结论似乎是这是不可能的.
如果您只关心在编写代码时所了解的异常,那么您可以编写一个处理所有"已知"异常的处理程序.诀窍是重新抛出你捕获的异常,catch(...)然后捕获各种已知异常......
所以,像:
try
{
...
}
catch(...)
{
if (!LogKnownException())
{
cerr << "unknown exception" << endl;
}
}
Run Code Online (Sandbox Code Playgroud)
这里LogKnownException()看起来是这样的:
bool LogKnownException()
{
try
{
throw;
}
catch (const CMyException1 &e)
{
cerr << "caught a CMyException: " << e << endl;
return true;
}
catch (const Blah &e)
{
...
}
... etc
return false;
}
Run Code Online (Sandbox Code Playgroud)
您可以打开 RTTI 并使用 typeOf 函数。current_exception是纯粹的 stl 函数,仅适用于 stl 异常。
作为建议,catch(exctype)每个异常类型使用不同的。这将使生活变得更加轻松。
| 归档时间: |
|
| 查看次数: |
4455 次 |
| 最近记录: |