Почему я получаю исключение первого шанса, если никто не вызывает функцию?

Внезапно мой код начал бросать исключение First-chance exception at 0x7731c41f in VideoPlayer.exe: Microsoft C++ exception: GenICam::RuntimeException at memory location 0x0018f5dc.. Я не мог найти, где именно он бросает, поэтому я прокомментировал все в main функционировать и все за пределами main, Я начал раскомментировать блоки кода один за другим, пока код в main остатки прокомментировал. Делая это, я заметил, что есть функция A что, когда он закомментирован, нет исключения, но когда он не закомментирован, он выдает исключение выше.

Я не понимаю, как это может вызвать исключение, если оно не вызывается (я поместил в него точку останова, а код в main прокомментирован)?

1

Решение

Ваша функция будет использоваться во время статической инициализации.
Возьмите следующий пример:

#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;
}

Поскольку вы видите только первое случайное исключение, оно будет поймано и обработано. Я видел такие конструкции на абстрактных фабриках, например, где фабрика настраивается сама.
Причиной, по которой ваша точка останова не достигнута, должно быть что-то другое.

2

Другие решения

В VS, Меню отладки, Исключения … проверьте столбец броска для соответствующего типа. Затем начните отладку, и она остановится именно там, где происходит бросок. И вы можете посмотреть, почему.

0

По вопросам рекламы [email protected]