I don't often talk about it, but I spent the first ten years of my career doing software development, mostly in languages so low-level that programmers today turn pale at the mere mention of their names. But I just ran across a terrific article by Damien Katz about handling errors in software. He makes the (very astute, IMO) observation that quite a lot of errors programs are "expected" to handle are things that, well, can't be handled. It's sort of the computer equivalent of running out of gas and expecting your engine to somehow "handle" the problem instead of stopping and waiting for the AAA guy to show up.
Damn. Now I want to learn Erlang.