In preparation for a talk I'm giving at DOSUG I'm going to post my thoughts as they develop.
In Java, it is generally a bad idea to catch unchecked exceptions. This is because a unchecked exception usually means something Very Bad has happened, like running out of memory, and it's time for the program to terminate.
So why does Miranda catch unchecked exceptions?
First of all, Miranda only does this in a few places. Most notably, Miranda catches unchecked exceptions in the main loop, where it is getting the next message and processing it. Since Miranda isn't supposed to crash, this is Miranda's last line of defense against a runaway subsystem taking everything down.
Secondly, Miranda's usual response to an exception is to create a panic. I got the term from my days with Unix, where the operating system would, when it got into a bad state, "panic" and shut down. In Miranda, when a panic occurs, the system can decide to halt immediately, shut down, or try to keep going.
If Miranda tries to keep going, it keeps track of these "recoverable" panics, and stops if the become too numerous.