如何使用以下机制获取有关未处理异常的信息(类型+堆栈),在异常代码的深处抛出:
set_unexpected(my_unexpected())?
我怀疑这是可能的。有没有其他方法如何获得异常类型,在最好的情况下甚至调用堆栈的未处理抛出的地方?
答案 0 :(得分:0)
我已经浏览了一些,发现了一些有用的东西。
我的问题可以改写:我如何复活未处理的异常。 这是一个解决方案:
// resurrect gone exception here
std::string ResurrectException()
{
try
{
throw;
}
catch (const std::exception& e)
{
return e.what();
}
catch (int intEx)
{
char buffer[2];
sprintf(buffer,"%d",intEx);
std::string outStr = buffer;
return buffer;
}
catch (std::string strEx)
{
return strEx;
}
catch (char * buffEx)
{
std::string outStr = buffEx;
return outStr;
}
// } catch (my_custom_exception_type& e) {
// return e.ToString(); }
catch(...)
{
return "unknown exception!";
}
}
我只是想知道该部分"获取抛出异常的地方的堆栈"。在C#标准中,System.Exception类将有关堆栈的信息作为字符串成员传递。不幸的是,我在C ++标准系统异常中没有看到这一点。