Why do (bgl) exceptions in modal crash blender
bgl callbacks

The modal part of your operator needs to return something each time it's called, in the case of an exception that is probably return {'CANCELLED'}. Most exceptions are not fatal, but exceptions in bgl callbacks can be.

One crash is one too many, you might have to stick in a try/except (with traceback), at least until you find the cause of the exception in the bgl callback and find a way to prevent it, you also need to correct the GL state before the callback function ends. Else expect undefined behaviour.