以下方法(在 Visual Studio 2008 ref 类中)包含一个我认为会被捕获的简单错误 - 但它会导致进程以“调试断言失败!”而中止。消息框(msg 包括有问题的 STL 向量 src 行#)。无论是在 Debug 还是 Release 模式下编译,都会发生这种情况。本例中的进程是 Excel.exe,该方法通过 COM 互操作访问。
有人能告诉我为什么这个错误没有被困住吗?
String^ FOO()
{
try {
std::vector<int> vfoo;
vfoo.push_back(999);
return vfoo[1].ToString(); //!!!! error: index 1 not valid
}
catch(std::exception& stdE) { // not catching
return "Unhandled STL exception";
}
catch(System::Exception^ E) { // not catching
return "Unhandled .NET exception: " + E->Message;
}
catch(...) { // not even this is catching
return "Unhandled exception";
}
}