But in this case the library doesn’t seem to be handling the exception or dying, but rather somehow changing how the main processing process handles it. With both the default renderer and P2D the catch (RuntimeException ex) { } block is executed. But the behavior is different: for the default renderer, the window gets stuck with the exception message printed to the terminal, but with P2D, the window is closed “normally”, like calling exit(). I wrote some more details on github.
This is really a minor thing, but it still caused me a couple of hours of head-scratching.