I'm gonna have to agree with Dare in completely disagreeing with Joel. Exceptions do The Right Thing by default. Error results do the The Wrong Thing by default. That's the base difference, and it's an important one. I'm glad I don't have to work on any code inherited from “return code” people.