Why: separation of concerns
functions should return their expected results
not error details
normal case: return a value
exceptional case: throw an exception