次のメソッド (Visual Studio 2008 ref クラス内) には、キャッチされると思われる単純なエラーが含まれていますが、代わりに、「Debug Assertion Failed!」でプロセスが中止されます。メッセージ ボックス (msg には、問題のある STL ベクトル src line# が含まれています)。これは、デバッグ モードまたはリリース モードでコンパイルされた場合に発生します。この場合のプロセスは 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";
}
}