在这种情况下,我想根据抛出的异常执行一些操作,然后重新抛出异常。这是推荐的 - 我的目标是根据抛出的异常做一些工作并重新抛出它,让应用程序崩溃并生成在异常中具有调用堆栈的转储。
class Foo
{
public:
void HandleException(const std::exception& ex)
{
// Log, report some metrics
throw;
}
void Work(//Some inputs)
{
try
{
// trying doing some work
}
catch (const std::exception& ex)
{
// This is really an exceptional situation, and the exception should be thrown which
// cause the exe to abort and create dump.
// Intention is to preserve call stack and have it in dump.
HandleException(ex);
}
}
}
让我在问题中添加另一个注释:当我将HandleException作为lambda函数时,抛出lambda会导致异常。我需要捕获一些状态吗?我该怎么做?
答案 0 :(得分:0)
当你遇到异常时,你有两个选择:
重新抛出原始异常是实现第二个项目符号的一种方法。