visual-studio-2010之什么是第一次机会异常(exception)

findumars 阅读:20 2024-11-01 17:39:52 评论:0

我得到一个 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 .)

那么为什么我会收到错误消息?

似乎只是忽略错误并继续执行。

请您参考如下方法:

So why do I get the error?

这不是错误,只是调试器通知。有几种,例如,您还会在线程退出或加载 DLL 或程序终止时看到通知。这些是程序中通常会对程序产生很大影响的事件类型,C++ 异常是异常事件,因此调试器会让您了解这一点。

“第一次机会”异常不必变成会中止程序的未处理异常。它没有,你在你的代码中写了 try/catch 并捕获了异常。仍然很高兴知道这一点,也许您的 catch 处理被破坏并且您的程序行为不端。这很常见,因为异常应该是异常的,所以不要经常进行测试。您可以使用 Debug + Exceptions 来做到这一点,为 C++ 异常勾选 Thrown 复选框。调试器现在会在第一次出现异常通知时自动中断程序,让您有机会找出引发异常的确切原因。非常有用。

您不必查看这些通知,右键单击“输出”窗口并取消选中“异常消息”选项。

功能,不是错误。


标签:Exception
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号