https://youssefsellami.com/exceptions_vs_result_object/