帮助Try Catch

jma*_*erx 2 c++ opengl

我正在使用GLUTesselator并且每隔一段时间EndContour()失败所以我这样做了:

         try
        {
            PolygonTesselator.End_Contour();
        }
        catch (int e)
        {
            renderShape = false;
            return;
        }
Run Code Online (Sandbox Code Playgroud)

为什么它仍会崩溃,它应该执行捕获代码吗?我怎么能解决这个问题?

谢谢

Ian*_*anH 10

PolygonTesselator.End_Contour(); 崩溃或抛出异常?

请注意,真正的"崩溃"(段错误,非法指令等)不会在C++意义上引发异常.

在这些情况下,CPU会触发中断 - 这有时也称为异常,但与C++异常无关.

在C++中,您运行的是真正的CPU - 而不是像Java中那样的虚拟机,其中每次内存违规都会导致语言执行,如NullPointerException或ArrayOutOfBoundsException.

在C/C++中,CPU异常/中断/陷阱由操作系统处理并作为"信号"转发到进程.您可以捕获信号,但通常这对崩溃没有帮助(SIGSEG,SIGILL,SIGFPU等).