为什么我得到第一次机会异常,如果没有人调用该函数

Why I get First-chance exception if no one calls the function?

本文关键字:如果没有 如果 没有人 调用 函数 异常 第一次 机会 为什么      更新时间:2023-10-16

突然,我的代码开始抛出一个异常First-chance exception at 0x7731c41f in VideoPlayer.exe: Microsoft C++ exception: GenICam::RuntimeException at memory location 0x0018f5dc..,我找不到它抛出的确切位置,所以我在main函数和main之外的所有内容中注释了所有内容。我开始逐一取消注释代码块,而main中的代码仍然注释。在这样做的时候,我注意到有一个函数A,当它被注释时没有异常,但是当它不被注释时,它会抛出上面的异常。

我不明白它如何能导致异常,如果它不调用(我放置断点在它和代码main被注释)?

您的函数将在静态初始化期间使用。看下面的例子:

#include <iostream>
bool static_func()
{
    std::cout << "Before main" << std::endl;
    return true;
}
static const bool b = static_func();
int main()
{
    std::cout << "We are main" << std::endl;
    return 0;
}

因为你只看到第一次异常,所以它将被捕获和处理。例如,我在抽象工厂中见过这样的结构,在那里工厂配置自己。没有命中断点的原因一定是别的原因。

在VS中,Debug菜单,Exceptions…检查投掷柱的匹配类型。然后开始调试,它将在发生throw的地方停止。你可以看看为什么

相关文章: