7
ここに私が話すコードの部分があります。clang try catchが失敗する
try {
std::cerr << "first try" << std::endl;
po::store(po::parse_config_file(ifs, _configFileOptions, false), vm);
} catch(...) {
std::cerr << "second try" << std::endl;
}
詳細を調べるために、私は設定ファイルを解析するためにprogram_optionsを使用しています。ブーストによって例外が発生するのは、認識できないファイルにオプションを入れるからです。
Clangがこの例外をキャッチしないという問題があります。
c++ --version
Apple LLVM version 7.3.0 (clang-703.0.31)
Target: x86_64-apple-darwin15.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
はEDIT:例外が存在しない場合には、構文解析とすべてが正常に動作します。基本的に私はここでしか
first try
libc++abi.dylib: terminating with uncaught exception of type boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::program_options::unknown_option> >: unrecognised option 'TestFrequency'
Abort trap: 6
は私の打ち鳴らすのバージョンである出力で見ます
あなたはどのバージョンのブーストをお持ちですか?たぶんあなたはcatch(std :: exception&) – Trevir
boost 1.55を使ってより良い運があります。すべてがlibC++に対するClangでコンパイルされています。はい、私はキャッチしようとしましたが(std :: exception&)質問を提出する前に、それは動作しませんでした。 –
これはboostとexeが異なる標準ライブラリに対してコンパイルされているときによく見られます(私があなたがこれを言及したことを知っていますが、もう一度チェックします)。 –