(Originally authored Feb 2008. This is a revision of an older post from before I began blogging on the internet at large. It’s been edited for style, not content)
This is one of those “religous wars” in programming language theory; return code handling (RCH) vs exception handling (EH). Firstly, I am biased. Secondly, I will try to remain objective as well, partitioning observations of code using these mechanism from how I feel this reflects on the utility of either mechanism. I tend to _prefer_ EH in general, but not universally, and generally follow the viewpoint that “exceptions are for exceptional things”. With that aside…
Raymond Chen wrote an article a while back on RCH vs EH[2]. There, he points out accurately some facts about code review of RCH and EH, concluding that it’s generally harder to conclude the failure-safety of some example the RCH code than some comparable EH code.
He’s right. And he’s wrong. His article is incomplete. Lets start with defining the playing field.