加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – Boost.Asio中的异常处理

发布时间:2020-12-16 03:00:01 所属栏目:百科 来源:网络整理
导读:Boost.Asio文档 suggests the following exception handling pattern: boost::asio::io_service io_service;...for (;;){ try { io_service.run(); break; // run() exited normally } catch (my_exception e) { // Deal with exception as appropriate. }}
Boost.Asio文档 suggests the following exception handling pattern:
boost::asio::io_service io_service;
...
for (;;)
{
  try
  {
    io_service.run();
    break; // run() exited normally
  }
  catch (my_exception& e)
  {
    // Deal with exception as appropriate.
  }
}

它的问题是异常的上下文在处理时丢失.例如,如果在给定的io_service中有多个套接字会话,我不知道导致了异常的哪一个.

处理来自异步处理程序的异常而不将它们包装在try / catch块中的更好的方法是什么?

解决方法

Boost.Asio推荐的模式没有任何错误.你应该做的是打包任何必要的信息来处理异常以及异常对象.如果您使用 boost::exception(或其派生类型)进行异常处理,则可以通过创建 boost::error_info专业化并使用运算符<<<<<你的catch块可以用 get_error_info提取这个信息.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读