Looks like it's the season for talking about exceptions. Brad Abrams discusses them at some length, and now Joel Spolsky does the same (and with almost the exact opposite opinion).
I seem to be cursed with the ability to see both sides of this issue. On the one hand, I like being able to throw an exception whenever an impossible condition comes up in running code (you know, when that if-statement you put in "just in case" goes off completely unexpectedly). On the other hand, I hate having to deal with exceptions being thrown... trying to make my code completely exception safe is very annoying.
And there's nothing exceptional about calling File.Open with a non-existent file.