You could define a custom InvalidFieldException for:
- Invalid username / email / password
- Username already used
- Email already used
which contains a Map describing all the errors where the key is the field identifier, and the value the associated error message.
For:
- Failed to make a HTTP call to the server (IOException from Apache HTTPClient)
- Non 200 OK server HTTP response or failed to parse the servers JSON response
You can just define one or two dedicated exceptions and print a message on the screen for the user.
It is also a bad practice to put validation only in your ui, it should at least append in your model.