Why Error Codes Are Better Than Exceptions