We currently initialize the crash-handler first, before instantiating any classes. This means that any errors in startup will get a massive, largely meaningless, crash report, that obscures relevant information more than it helps.
We should probably initialize the crash-handler very last, as part of the Application.start method, so that startup errors are raised as simple exceptions, rather than crashes.
For instance, it's trivially easy to crash IPython right now, by simply giving invalid values for configurables:
The crash report gives the incorrect impression that IPython has done something wrong.
It should probably also be an option to select a less verbose crash-handler, that doesn't print massive amounts of information, even when the crashes are real.
I see two ways to address the obvious issue above of bad user config causing crashes.