为什么';我的捕获代码不会被执行吗? 有一个C++应用程序,VS2012,看起来像: int main(int argc, char* argv[]){ try{ //Stuff } catch(exception& e){ std::cout << e.what() << std::endl; } int b; cin >> b; return 0; } intmain(intargc,char*argv[]){ 试一试{ //东西 } 捕获(例外和e){ std::cout b; 返回0; } 如果我在调试模式下运行,工作正常 如果我在发布模式下运行,效果很好 如果在F5+ctrl模式下运行,应用程序将崩溃,并且不会执行catch语句 如果我去调试->异常,C++异常的勾选框不被勾选,并且C++异常的用户处理框被勾选了,所以我希望我的catch语句能够被执行。

为什么';我的捕获代码不会被执行吗? 有一个C++应用程序,VS2012,看起来像: int main(int argc, char* argv[]){ try{ //Stuff } catch(exception& e){ std::cout << e.what() << std::endl; } int b; cin >> b; return 0; } intmain(intargc,char*argv[]){ 试一试{ //东西 } 捕获(例外和e){ std::cout b; 返回0; } 如果我在调试模式下运行,工作正常 如果我在发布模式下运行,效果很好 如果在F5+ctrl模式下运行,应用程序将崩溃,并且不会执行catch语句 如果我去调试->异常,C++异常的勾选框不被勾选,并且C++异常的用户处理框被勾选了,所以我希望我的catch语句能够被执行。,c++,visual-studio,exception,visual-studio-2012,C++,Visual Studio,Exception,Visual Studio 2012,我不明白为什么我的catch语句没有被执行 (也不明白为什么代码在发布模式下运行,但不在f5+ctrl模式下运行)C++异常机制不应该捕获程序中的“崩溃”。“崩溃”在VisualStudio编译的代码中,生成所谓的结构化异常,由代码> > SyTy-Ty-Ex-除--y>最后> /Cord>机制。它们完全独立于C++异常。通常,它们不会被C++异常处理程序(即, catch < /代码>)捕获。 如果您想通过C++代码截取结构化异常>尝试-catch /COD>异常处理机制,则必须在>EHA 模

我不明白为什么我的catch语句没有被执行


(也不明白为什么代码在发布模式下运行,但不在f5+ctrl模式下运行)

C++异常机制不应该捕获程序中的“崩溃”。“崩溃”在VisualStudio编译的代码中,生成所谓的结构化异常,由代码> > SyTy-Ty-Ex-除--y>最后> /Cord>机制。它们完全独立于C++异常。通常,它们不会被C++异常处理程序(即,<代码> catch < /代码>)捕获。

如果您想通过C++代码截取结构化异常>尝试-catch /COD>异常处理机制,则必须在>EHA 模式下编译代码(这可能会导致明显的性能开销)在IDE中,通过项目设置“代码> C/C++ +>代码生成->启用C++异常< /COD>进行控制。但是,结构化异常将不兼容<代码> STD::异常< /代码>类型,因此您的<代码> catch(异常和e)< /代码>仍然不会拦截它们。您将不得不使用<代码> catch(…)捕获它们。然后使用其他方法找出发生了什么


更好的是,如果您真的必须这样做,并且您希望编写代码,就代码< > STD::异常< /C> >,您可以通过安装.Ex/P>…………………………安装代码转换函数,手动将结构化异常翻译成C++异常。erator边界检查或发布版本中不存在的某些内容。@paddy与哈希(无序映射)有关。不幸的是,不能真正说明太多:s