Đây là phần mã tôi nói.clang try catch failed
try {
std::cerr << "first try" << std::endl;
po::store(po::parse_config_file(ifs, _configFileOptions, false), vm);
} catch(...) {
std::cerr << "second try" << std::endl;
}
Chỉ để tìm chi tiết, tôi đang sử dụng chương trình tăng cường để phân tích cú pháp tệp cấu hình. Một ngoại lệ được nâng lên bằng cách tăng kể từ khi tôi đặt một tùy chọn trong tệp không được công nhận.
Có vấn đề với Clang không bắt ngoại lệ này. Về cơ bản tôi chỉ thấy trong đầu ra
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
Đây là phiên bản kêu vang của tôi:
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: Khi không có ngoại lệ, các phân tích và tất cả mọi thứ hoạt động tốt.
Bạn có phiên bản tăng cường nào? Có thể bạn có may mắn hơn bằng cách sử dụng catch (std :: exception &) – Trevir
boost 1.55. Mọi thứ được biên dịch với Clang chống lại libC++. và có tôi đã cố gắng nắm bắt (std :: exception &) trước khi gửi câu hỏi nhưng nó đã không hoạt động. –
điều này là phổ biến khi tăng và exe được biên dịch với các thư viện chuẩn khác nhau (tôi biết bạn đã đề cập đến điều này, nhưng kiểm tra lại). –