在Visual C++ 2008中,我要“捕获”生成的异常,如下所示:
try {
int foo = 20;
::fgetpos(0, (fpos_t*)&foo);
}
//...
以下是为成功捕获而进行的调整:
简而言之,我已经尝试过“书中的所有内容”,但仍然无法捕捉到异常。如果我用
::fgetpos
替换对int hey = foo / 0
的调用,那么突然上述所有技术都能按预期工作。因此,我从::fgetpos
处理的异常在某种程度上“特别”。有人可以解释为什么:: fgetpos错误似乎无法捕获,以及如何解决该错误吗?
更新在VS IDE中执行时,输出窗口不会命名异常。它说的全部是这样的:
不是很有帮助。当我从命令行运行控制台应用程序时,出现崩溃对话框。对话框的“问题详细信息”部分包含以下信息:
最佳答案
由于转储中的代码与STATUS_INVALID_CRUNTIME_PARAMETER
相对应,请尝试 _set_invalid_parameter_handler