gpt4 book ai didi

c++ - handler失败后怎么办?

转载 作者:太空宇宙 更新时间:2023-11-04 14:08:21 24 4
gpt4 key购买 nike

当读取操作处理程序返回错误时,是否意味着连接断开/失败/关闭? 启动另一个异步操作是否有意义?

我的意思是,根据不同的可能错误,推理可能非常复杂。

void ReadHandler(const boost::system::error_code& error, size_t bytes_transferred)
{
if(!error)
{
// OK
}
else
{
// does it make any sense to continue and start another async operation ?
// or I have to check the error with error.value() and possibly close
// the session or stop reading...etc ?
}

我如何知道连接是否仍然可用?当下面的 TCP 层发生读取错误时,是因为连接中确实出了问题吗?

最佳答案

了解错误本身可能有一定的值(value)。但另一方面,除非你有一个“哪些错误可以继续,哪些错误不可以”的完整列表,否则你几乎最终会采用“最佳猜测”方法。

几乎可以肯定,有些错误是可以恢复的——暂时没有足够的缓冲区空间来接收数据包,或者类似的错误。其他错误是永久性的(有人拔掉了网络交换机的电源...)。

解决该问题的一种方法是计算您连续收到多少错误 - 如果您继续并且没有收到另一个错误,那么很好......如果您收到三个(或五个或十个或100) 连续出错,你退出,因为事情可能没有好转

另一种方法是在给定时间内允许出现如此多的错误(例如,10 秒内超过 5 个错误,或一分钟内超过 50 个错误,或者任何对您的应用程序有意义的错误)。

第三种方法是询问用户——这实际上取决于用户的级别,他/她在收到类似“收到错误 X,你想继续吗?(是)|(否)”这样的消息时会做什么"类型问题。

问题的很大一部分当然是“您的应用程序在做什么,在错误处理方面‘弄错’的后果是什么?” - 如果不了解更多您的项目,我们无法真正回答这个问题 - 实际上,这可能超出了本网站指南的解决范围。

关于c++ - handler失败后怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15974130/

24 4 0
文章推荐: c++ - 为什么我的字节数组在我将它插入我的数据库时在 0x00 处拆分(SQL SERVER,C++)
文章推荐: jquery - 显示一个
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com