Currently, a Haskell program that reports uncaught exceptions in stderr looks like this:
main :: IO ()
main = withJVM [] $ handle (showException >=> Text.hPutStrLn stderr) the_program
The call to handle is cheap enough that it should be made inside of withJVM, making the default behavior the more chatty. Thus, the same behavior could be achieved with
main :: IO ()
main = withJVM [] the_program
If the programmer doesn't want to print uncaught exceptions, she can catch them before the_program returns.