The error case is never checked by the caller. Better to throw, I think.