Damien Katz is working on a big project called Couch (a non-relational database, plus a bunch of other stuff). He's given a lot of thought to how to make the software reliable, in particular, how to handle unforeseen conditions. He's just posted a long explanation of his thoughts on the matter: Error codes or Exceptions? Why is Reliable Software so Hard? It's very good, includes witty illustrations, and even (in the comments) an admission that the whole Hasselhoff thing is a gag.
Damien is implementing Couch in Erlang, which is one of those esoteric languages I wish I had the time to really understand. From what Damien has told me about it, it is truly mind-bending, in good ways. His article points in the Erlang direction, to give you a taste of how a different programming paradigm can change how you think about software.