2016-02-05 60 views
2

任何人都可以讓我知道如何拋出bad_lexical_cast異常。如何拋出提升不好的詞法拋出異常

單元測試嘲諷我有以下代碼:

if(!Throw) 
    return boost::lexical_cast<std::string>(some_value); 
else 
    throw boost::throw_exception(boost::bad_lexical_cast()); 

但這如下給人一種編譯錯誤:

error: invalid use of ‘void’ throw boost::throw_exception(boost::bad_lexical_cast()); 

回答

2

刪除第一個throwboost::throw_exception是一個簡單地執行自己的功能。更具體地說,boost::throw_exception將一個異常作爲參數,並使用該參數的副本來引發異常。

if(!Throw) 
    return boost::lexical_cast<std::string>(some_value); 
else 
    boost::throw_exception(boost::bad_lexical_cast()); 

boost::throw_exception實際上是Boost.Exception庫,它使用C++中的一些巧妙的方法來讓你更多的信息附加到異常,同時保留原有的異常類型的一部分。查看鏈接的文檔以獲取更多信息。