Obligatory link to Jim Gray's "Why Do Computers Stop and What Can Be Done About It?":
http://www.hpl.hp.com/techreports/tandem/TR-85.7.pdf
TL;DR: Most software bugs that make it past testing are transient "heisenbugs". That is, they're the kind of bug that goes away when if you restart the program.
Related: This is actually a core tenet of the Erlang ecosystem -- spend any length of time around Erlangers and you're bound to hear the phrase "let it crash". Erlang actually has support for this built into the system: Supervisor processes exist to automatically "power cycle" your code if an unhandled error occurs.