Note: it seems the Visual C++ runtimes do call kernel32.RaiseException wich calls ntdll.RtlRaiseException which calls ntdll.ZwRaiseException, which eventually does do a switch to ring0.
Don’t have a copy of GCC installed on windows right now, but I think they’re using a different route without depending on OS support?