Visual Studio C ++调试模式下的运行时错误,但不在发布中;用于工作的代码

时间:2015-07-05 14:40:45

标签: c++ opencv visual-studio-2013

总之,我写了一些代码。它在调试和发布模式下运行良好。我添加了代码。我开始收到错误。我注释掉了新代码。我继续得到同样的错误,即使我回到了有效的地方。我发现这个bug只在调试模式下出现 - 它在发布时运行良好。

我得到的错误是:

First-chance exception at 0x748F4598 in Speed3Calib1.exe: Microsoft C++  
exception: cv::Exception at memory location 0x005EC350.

If there is a handler for this exception, the program may be safely continued.

我走过去找到了给我带来麻烦的部分(自从我第一次提出这个问题以来,我已经添加了异常处理)。这部分给我带来了麻烦。

try {
    calibrateCamera(object_points_vector, test_image_points_vector, test_image.size(), intrinsic,
            distortion_coefficients, rvecs, tvecs, calibration_flags);
}
catch (cv::Exception &e) {
    std::cerr << "Exception: " << e.what() << std::endl;        
    return 0;
}

新的奇怪之处在于它永远不会进入catch区块,但仍会引发错误。

自从第一次询问以来,我偶然发现了一个勾选的框#34;当它被抛出时会中断这个错误&#34;。我取消勾选它,现在它运行,但仍然在Debug的输出中出现异常。我无法弄清楚为什么刚刚开始,或者为什么我无法捕捉到cv :: Exception。

我注意到,据微软称,在程序处理它们之前出现了第一次机会异常。

  

但是,如果正在调试应用程序,则调试器会在程序执行之前查看所有异常。

我仍然感到困惑:因为执行从未进入catch块,这是否意味着第一次机会异常被抛出但是cv :: Exception不是,或者由于某种原因cv :: Exception没有被抓住?

另外,我是Visual Studio的新手,我的C ++已经超过10年了(自2000年以来我一直是Netbeans和Java)。

0 个答案:

没有答案