我收到First-chance exception at 0x75FA2EEC in x.exe: Microsoft C++ exception: boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::property_tree::ptree_bad_path> > at memory location 0x006AE774
。
在我的代码中,我以为我已经处理过它们了:
const ptree& v;
std::string value;
try { value = v.get<std::string>("<xmlattr>.Value"); }
catch(ptree_bad_path&) { value = v.get_value<std::string>(); }
(根据docs。)
那么为什么我会收到错误?
似乎只是忽略了错误然后继续执行。
答案 0 :(得分:5)
那么为什么我会收到错误?
这不是错误,它只是一个调试器通知。有几个,例如,当线程退出或DLL加载或程序终止时,您也会看到通知。这些是程序中通常会对程序产生很大影响的事件,C ++异常是一个特殊事件,因此调试器会让您知道这一点。
“第一次机会”异常不必变成中止您的程序的未处理异常。它没有,你在代码中编写了try / catch并捕获了异常。仍然很高兴知道这一点,也许你的捕获处理被打破,你的程序行为不端。它通常是因为异常应该是例外的,所以不要经常进行测试。您可以使用Debug + Exceptions执行此操作,勾选C ++异常的Thrown复选框。调试器现在会在第一次机会异常通知时自动中断程序,让您快速找到抛出异常的原因。非常有用。
您不必查看这些通知,右键单击“输出”窗口并取消选中“异常消息”选项。
功能,而不是错误。