Kar*_*ius 1 c++ boost exception-handling boost-asio
boost::asio::io_service::run()boost::system::system_error如果出错,则抛出异常.我应该处理这个例外吗?如果是这样,怎么样?
我的main.cpp代码是这样的:
main()
{
    boost::asio::io_service queue;
    boost::asio::io_service::work work(queue);
    {
      // set some handlers...
      **queue.run();**
    }
    // join some workers...
    return 0;
}
是.
记录了从完成处理程序抛出的异常被传播.所以你需要根据你的应用来处理它们.
在许多情况下,这将循环并重复run()直到它退出而没有错误.
在我们的代码库中,我有类似的东西
static void m_asio_event_loop(boost::asio::io_service& svc, std::string name) {
    // http://www.boost.org/doc/libs/1_61_0/doc/html/boost_asio/reference/io_service.html#boost_asio.reference.io_service.effect_of_exceptions_thrown_from_handlers
    for (;;) {
        try {
            svc.run();
            break; // exited normally
        } catch (std::exception const &e) {
            logger.log(LOG_ERR) << "[eventloop] An unexpected error occurred running " << name << " task: " << e.what();
        } catch (...) {
            logger.log(LOG_ERR) << "[eventloop] An unexpected error occurred running " << name << " task";
        }
    }
}
| 归档时间: | 
 | 
| 查看次数: | 867 次 | 
| 最近记录: |