gpt4 book ai didi

c++ - 如何在 Windows 上将无效的 fgetpos 调用捕获为 C++ 异常?

转载 作者:行者123 更新时间:2023-11-30 01:30:02 26 4
gpt4 key购买 nike

在 Visual C++ 2008 中,我想“捕获”生成的异常,如下所示:

try {
int foo = 20;
::fgetpos(0, (fpos_t*)&foo);
}
//...

以下是我为尝试成功捕捉所做的调整:

  1. SEH 已激活 (/eha)
  2. 我添加了一个 catch(...)
  3. 我添加了一个 _set_se_translator vector 。
  4. 我已经添加/调整了 SEH 语法:__try/__except(EXCEPTION_EXECUTE_HANDLER)

简而言之,我已经尝试了“书中的一切”,但我仍然无法捕捉到异常。如果我用 int hey = foo/0 替换对 ::fgetpos 的调用,那么上述所有技术都会突然按预期工作。所以我处理的来自 ::fgetpos 的异常在某种程度上是“特别的”。

谁能解释为什么这个::fgetpos 错误似乎无法捕获,以及如何解决它?

update 在 VS IDE 中执行时,输出窗口不命名异常。它只是说:

Microsoft Visual Studio C Runtime Library has detected a fatal error in MyProgram.exe.

帮助不大。当我从命令行运行控制台应用程序时,出现崩溃对话框。对话的“问题详细信息”部分包含以下信息:

Problem Event Name: BEX
Exception Offset:0002fd30
Exception Code: c0000417
Exception Data: 00000000
Additional Information 1:69ad
Additional Information 2:69addfb19767b2221c8e3e7a5cd2f4ae
Additional Information 3:b1ff
Additional Information 4:b1ffca30cadddc78c19f19b6d150997f

最佳答案

由于转储中的代码对应于 STATUS_INVALID_CRUNTIME_PARAMETER,请尝试 _set_invalid_parameter_handler

关于c++ - 如何在 Windows 上将无效的 fgetpos 调用捕获为 C++ 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5053977/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com