2017-01-17 35 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)

相關問題