catch(…) is not catching an exception, my program is still crashing

后端 未结 4 1071
余生分开走
余生分开走 2021-02-19 17:01

I\'m having a problem with a tester that my application crashes in initialization. I added more logging and exception handling but it still crashes with the generic \"this progr

4条回答
  •  醉梦人生
    2021-02-19 17:19

    If a C++ catch(...) block is not catching errors maybe it is because of a Windows error.

    On Windows there is a concept called Structured Exception Handling which is where the OS raises "exceptions" when bad things happen such as dereferencing a pointer that is invalid, dividing by zero etc. I say "exceptions" because these are not C++ exceptions; rather these are critical errors that Windows defines in a C-style fashion - this is because Win32 was written in C so C++ exceptions were not viable.

    See also:

    • Difference between a C++ exception and Structured Exception
    • try-except Statement
    • Method of getting a stack trace from an EXCEPTION_POINTERS struct

    Update based on comments

    If you want both C++ exception handing and SEH perhaps you could try the following (untested) code:

    __try
    {
        try
        {
            // Your code here...
        }
        catch (std::exception& e)
        {
            // C++ exception handling
        }
    }
    __except(HandleStructuredException())
    {
        // SEH handling 
    }
    

提交回复
热议问题