難道你們能幫我解決由boost::iostreams::mapped_file_sink
拋出的未知異常嗎?boost :: iostreams :: mapped_file_sink會拋出未知的異常
我的配置
- 提升1.51
- 在Windows 7上的Visual Studio 2012
- GCC 4.7在Ubuntu
這裏是我的代碼有
try
{
boost::iostreams::mapped_file_params params_;
boost::iostreams::mapped_file_sink sink_;
params_.length = 0;
params_.new_file_size = 1024;
params_.path = "./test.bin";
sink_.open(params_);
sink_.close();
}
catch (std::ios::failure& ex)
{
std::cout << "\t" << "what: " << ex.what() << "\n";
}
catch (std::system_error& ex)
{
std::cout << "\t" << "code: " << ex.code() << " what: " << ex.what() << "\n";
}
catch (std::runtime_error& ex)
{
std::cout << "\t" << ex.what() << "\n";
}
catch (boost::archive::archive_exception& ex)
{
std::cout << "\t" << ex.what() << "\n";
}
catch (boost::exception& ex)
{
std::cout << "blah\n";
}
catch (std::exception& ex)
{
std::cout << "\t" << ex.what() << " --- " << typeid(ex).name() << "\n";
}
它總是在Windows中工作。
在Ubuntu中,它創建給定大小的空文件,但在open()
上拋出異常。如果存在,後續執行代碼不會導致異常。
最糟糕的是我看不到異常的原因。我只能捕獲std::exception
,其what()
返回無意義的「std :: exception」。
在拼命想找出什麼是錯的我輸出typeid(ex).name()
這說明
N5boost16exception_detail10clone_implINS0_19error_info_injectorISt9exception
根據谷歌這意味着:boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<std::exception> >
任何想法有什麼不對?
謝謝你的提示!我在Visual Studio中開發時並不十分熟悉Linux工具。 – expert