此异常是啥意思>Project3.exe 中 0x000007FEFD38A06D 处的第一次机会异常未处理异常
Posted
技术标签:
【中文标题】此异常是啥意思>Project3.exe 中 0x000007FEFD38A06D 处的第一次机会异常未处理异常【英文标题】:what does this exception mean >First-chance exceptionUnhandled exception at 0x000007FEFD38A06D in Project3.exe此异常是什么意思>Project3.exe 中 0x000007FEFD38A06D 处的第一次机会异常未处理异常 【发布时间】:2016-08-18 15:31:37 【问题描述】:我正在研究自动车牌识别,我提供汽车图像作为输入,但我遇到了这个异常
Project3.exe 中 0x000007FEFD38A06D 处的第一次机会异常:Microsoft C++ 异常:内存位置 0x0000000000249160 处的 cv::Exception。 如果有这个异常的处理程序,程序可以安全地继续。
如果我选择继续选项,我会得到 p>
Project3.exe 中 0x000007FEFD38A06D 处未处理的异常:Microsoft C++ 异常:内存位置 0x00000000002590D0 处的 cv::Exception。 如果有这个异常的处理程序,程序可以安全地继续。
如果我进一步选择继续选项,我会得到
Debug assertion failed Line 1140 Expression:vector script out of range
谁能说出所有这些错误是什么意思?
【问题讨论】:
这意味着你需要调试你的程序。当调试时发生异常时,打开调用堆栈窗口并回溯到您的代码。 你显然在第 1140 行有问题 请在第 1140 行粘贴代码。 Debug assertion failed Line 1140 Expression:vector script out of range -- 所以你说你不知道错误可能告诉你什么? 向量脚本超出范围 - 可能意味着您对std::vector
对象的索引变量超出了元素的数量或超出了向量的容量。
【参考方案1】:
Project3.exe 中 0x000007FEFD38A06D 处的第一次机会异常:Microsoft C++ 异常:内存位置 0x0000000000249160 处的 cv::Exception。 如果有这个异常的处理程序,程序可以安全地继续。
让我们分解一下:
First-chance exception:这是调试器告诉您已抛出异常。这不是错误。如果您决定继续,则会将异常传递给程序。 Project3.exe 中的 0x000007FEFD38A06D:这是引发异常时 instruction pointer 所在的位置。它对您不是很有用,但有时可以用来找出在没有符号的构建中出现问题的地方。 Microsoft C++ 异常:这是一个 C++ 异常,而不是像 a Structured Exception 这样的异常。 cv::Exception:这是抛出的异常的名称。好像是exception from OpenCV。 在内存位置 0x0000000000249160:这是堆栈上异常对象的地址。同样,不是很有用。按继续然后会将异常传递给程序。如果被正确捕获,程序可以继续正常执行。如果此异常没有处理程序,您将收到下一条消息:
Project3.exe 中 0x000007FEFD38A06D 处未处理的异常:Microsoft C++ 异常:内存位置 0x00000000002590D0 处的 cv::Exception。 如果有这个异常的处理程序,程序可以安全地继续。
这意味着抛出了一个异常,但在任何地方都没有针对它的 catch 处理程序。这很可能是您的编程错误。看起来您调用了一个 OpenCV 函数,该函数因抛出 cv::Exception
而失败,但您没有捕捉到它。
这通常会导致崩溃,但由于您在调试器中运行,您可以选择忽略此异常。这就是 Continue 按钮将在此对话框中执行的操作。因此,代码不会抛出异常,而是继续执行,就好像什么都没发生一样。这最终可能会失败,因为现在已忽略错误条件。
Debug assertion failed Line 1140 Expression:vector script out of range
那里。我不知道这发生在哪个文件中,但在第 1140 行的某处,std::vector
的索引值超出了范围。这并不奇怪,因为您忽略了异常并允许程序继续运行。
长话短说:您需要捕获cv::Exception
并正确处理错误情况。
【讨论】:
感谢您的详细解答。下次会记住做更多的研究。以上是关于此异常是啥意思>Project3.exe 中 0x000007FEFD38A06D 处的第一次机会异常未处理异常的主要内容,如果未能解决你的问题,请参考以下文章