create exceptions hierarchy
bind error codes to each exception
throw DataConflictException instead of IllegalArgumentException if create new user request contains user id