boost_file_source会抛出什么异常呢?

时间:2014-10-28 12:22:57

标签: c++ exception boost memory-mapped-files

Boost 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;
}

1 个答案:

答案 0 :(得分: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

     

扩展到std :: ios_base ::失败(如果可用),并扩展到合适的版本   另外,派生类std :: exception。

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