首页 > 解决方案 > 使用回调函数传递异常

问题描述

首先,我无法访问“现代”功能,例如std::futurestd::async。我想异步执行操作。结果在回调中给出。如果操作因异常而失败,我想将其作为std::optional参数传递,以供处理程序检查。这被认为是不好的做法和危险吗?


void
doOperation(std::function<void(SomeClass*, std::optional<std::exception>)> doneHandler)
{
  try
  {
    auto result = doStuff();
    doneHandler(result, cpp17::nullopt_t);
  }
  catch (const std::exception& e)
  {
    doneHandler(nullptr, e);
  }
}

标签: c++exception

解决方案


推荐阅读