2017-01-17 34 views
2

我有一个方法返回一个std::error_code。我对错误消息并不特别感兴趣,只关心该方法是否成功。如何测试std :: error_code不是错误?

测试std::error_code代表成功操作的最佳方法是什么?

+4

你试过std :: error_code :: operator bool()吗? http://en.cppreference.com/w/cpp/error/error_code/operator_bool – roalz

+0

“true”表示成功还是失败? – sdgfsdh

+0

“如果value()== 0,则返回false,否则返回true。”至于什么值==零意味着:“std :: error_code是一个平台相关的错误代码” – roalz

回答

1

我在使用ASIO库时遇到过类似的情况。至于什么one of their blog posts表明,std::error_code是为了进行测试,如下所示:

std::error_code ec; 
// ...  
if (!ec) 
{ 
    // Success. 
} 
else 
{ 
    // Failure. 
} 

已经挖得更深一些,我发现C++标准谷歌组,这证实了上述而且本声明this(更近)的讨论引发了关于std::error_code的当前设计是否足够简单的问题。长话短说,如果你需要简单地告诉成功的错误,你需要的是!static_cast<bool>(errorCode)

相关问题