Внезапно мой код начал бросать исключение 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, Меню отладки, Исключения … проверьте столбец броска для соответствующего типа. Затем начните отладку, и она остановится именно там, где происходит бросок. И вы можете посмотреть, почему.