gpt4 book ai didi

c++ - Boost.Asio 中的异常处理

转载 作者:可可西里 更新时间:2023-11-01 15:52:54 25 4
gpt4 key购买 nike

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 中有多个套接字 session ,我不知道是哪个导致了异常。

如果不将异步处理程序的异常 包装在 try/catch block 中,处理异常的更好方法是什么?

最佳答案

Boost.Asio 推荐的模式没有错。您应该做的是将处理异常所需的所有信息与异常对象一起打包。如果你使用 boost::exception (或从它派生的类型)用于异常处理,您可以通过创建 boost::error_info 的特化来非常轻松地附加元数据(包括 session 信息)并使用 operator<< 将其附加到异常对象。然后,您的 catch block 可以使用 get_error_info 提取此信息.

关于c++ - Boost.Asio 中的异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3066557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com