On Windows with SEH using try … except-blocks without using the SysUtils unit is currently (from 3.2.0 on) not fully supported anymore, because the SEH implementation is missing some functions to allow the usage without that unit.
Is that documented somewhere?
No, because it's essentially a bug.
On Windows with SEH using try … except-blocks without using the SysUtils unit is currently (from 3.2.0 on) not fully supported anymore, because the SEH implementation is missing some functions to allow the usage without that unit.
Wow, that rings alarm bells, especially for Windows avoiders like me. SEH is a compiler option to Microsoft C (and incomplete with C++), so a FPC/Lazarus app would not be using SEH. Even MS seem to suggest its not a good thing. Is the warning from Pascal Dragon because we might be linked to libraries that do use SEH ?
Ehm... you are aware that SEH is
the exception handling mechanism on Windows, used throughout the operating system and even across languages? The compiler option in MSVC is simply whether the conversion of SEH exceptions to C++ exceptions is enabled.
There's a reason after all that we switched from
setjmp/
longjmp based exception handling, because otherwise there were issues with exceptions that occurred in libraries that the executable captured while it shouldn't.
By " not fully supported" do you mean it compiles but might not work ? Does the compiler generate a Warning for example ? Given that I do much of my "What if this happens" extreame testing in Linux, sounds like the exceptional events that might lead to an Exception might just crash my app on Windows unpredictably ?
It means that it will compile, but an
except-block might not be entered correctly if at all if an exception occurs.