【发布时间】:2012-03-02 18:21:55
【问题描述】:
我有一个绑定到boost::asio::deadline_timer 的回调函数。现在,当计时器取消或到期时调用该函数。由于我需要区分这两种情况,我需要检查传递的错误代码。基本代码如下:
void CameraCommand::handleTimeout(const boost::system::error_code& error)
{
std::cout << "\nError: " << error.message() << "\n";
return;
}
现在当定时器超时调用Handler时错误码为Success,当定时器被取消时错误码为Operation canceled。
现在我的问题是,如何适当地检查发生了什么?
建议一:
if( error.message() == "Success" )
{
// Timer expired
}
else
{
// Timer cancelled
}
建议二:
if( error.value() == 0 )
{
// Timer expired
}
else
{
// Timer cancelled
}
现在我的问题是 - 有没有办法单独比较错误而不是按值或字符串比较?类似的东西(这是现在编造的)
if ( error == boost::system::error::types::success )
因为我不喜欢第一个建议是我需要创建一个字符串仅用于检查,我认为这有点不必要。第二种方法的缺点是如果我想检查其他内容,我需要查找所有错误代码? 那么是否有任何枚举或方法来检查错误,还是我有两种建议的方法之一?
【问题讨论】:
标签: c++ boost error-handling boost-asio