Recently I've been into multiple arguments on whether to throw an exception on false User Input.
Example: I'm trying to login though my account is not activated. As the programmer in an OO-language, I could handle this in a few ways. For this case, lets stick to these two:
- Throw a custom
Exception
from the localService
with a representative way, extendingException
. Catching this in theclass
handling User Input. - Use a
Validator
to call the localService
to check whether this account is logged in.
My vision, like many others, an Exception
represents a fault in the program. E.g. database unreachable, error in parsing data.
Vision of many others as well, the case of logging in without being activated is not a succesful scenario on any use case and will thus fail. This shouldn't not happen and is worth throwing an Exception
for.
Personally, I would handle this kind of problem with a Validator
, sticking to Exception
s for just the faults in the program. However though, I would like to get a constructive answer on which case is preferred. If possible, referring to any documentation. I'm using Java
, though this problem is not restricted to any language (as long as it's OO I guess).