If you can, and it is doable, definitely go with Caio's suggestion.
But, if for any reason (other than "I don't know", because in this case you should go learn it) you can't use his proposed solution, consider the questions:
A) How likely is it for the system to have another `status` added?
B) Who handles that code? If a team, how good is that team?
If (A) is highly unlikely, then I'd use option one (without the exception). Just because if it changed it would probably be a big thing and people should take care anyway.
But... if (A) is very likely or (B) is a team, and its members are average (or communication is bad), then I'd just have the exception there.
Thinking out of the box, if `status` is something like an enum, another option could be using option one (w/o the exception) and creating a test (nearby the tests of option one's module) that checks if the status has no elements other than CONFIRMED or REPROVED.
That's all I can think of, anyway.
Simple and complicated, eh? It seems we all need a shrink... :)