Let's say I have a social media website. On this website, users can upload several pieces of information about themselves, including their phone number. To implement this, I have a class called PhoneNumber
that represents the users phone number. But phone numbers are optional. I have this PhoneNumber
class which is supposed to guarantee access to a users phone number, but it can't. How do I handle this?
My current approach is to, whenever there's a problem, assign a value to an error
variable inside PhoneNumber
that represents the problem in question (this could be an exception, a string, or an error code, it's irrelevant for this question). I also added a method to PhoneNumber
called isPhoneNumberAvailable()
that should be called before any of the accessors are used. If one of the accessors is called and the user hasn't added their phone number, I throw an IllegalStateException
. But this doesn't seem like a good solution. I'm not sure why, I'm too new at this to explain it, but it seems like this could cause me some problems down the road.
Note that this question is language agnostic, the existence of an IllegalStateException
in Java is purely coincidental.
EDIT: The solution is improving the model. I have guaranteed access to something I can't guarantee access to, which is bad design. My other problem was with the use of an error
variable in class scope but that's beyond the scope of this question. See my follow up question here.