>>131.error codes forces the return type to contain an error code(typically 0). so using 0(or any other number which is defined as error e.g. -1) as return value is reserved.
2.Exceptions don't restrict return type
3.if error code is returned to separate variable #1 does not apply