2014-10-28 26 views
2

Boost mapped_file_source似乎在例如情況下引發異常。文件未找到。究竟哪些異常類會拋出?它似乎沒有在文檔中說,除非我失去了一些東西。增強mapped_file_source拋出什麼異常?

編輯:測試用例:

#include <boost/iostreams/device/mapped_file.hpp> 

int main(int argc, char** argv) { 
    boost::iostreams::mapped_file_source file; 
    file.open(argv[1]); 
    return 0; 
} 
+0

護理後,顯示的行爲很短的例子嗎? – user657267 2014-10-28 12:26:16

+0

@ user657267完成。 – rwallace 2014-10-28 12:31:36

+0

誰downvoted Supreme_D的答案(現在不幸被刪除)?我剛纔檢查過,他是對的,它是std :: exception的一個子類(儘管我仍然有興趣知道確切的類)。 – rwallace 2014-10-28 12:38:38

回答

4

萬一映射失敗,代碼

mapped_handle_ = 
     ::CreateFileMappingA( 
      handle_, 
      NULL, 
      protect, 
      0, 
      0, 
      NULL); 
    if (mapped_handle_ == NULL) 
     cleanup_and_throw("failed create mapping"); 

最終會拋出

boost::iostreams::detail::throw_system_failure(msg); 

std::exception一個子類。在這種情況下,它應該是std::ios::failure

BOOST_IOSTREAMS_FAILURE

擴展,如果可用標準::的ios_base ::失敗,並適當 派生類的std ::例外的除外。

參考:http://www.boost.org/doc/libs/1_41_0/libs/iostreams/src/mapped_file.cpp

+1

這是非常糟糕的記錄在文檔中提升內存映射文件,請考慮在文檔中添加一節。 – 2017-02-12 22:06:35

相關問題