When would you choose to return an error code rather than throw an exception