I think it is accepted that as a general rule in Java (and perhaps any language with exception handling) one should try to avoid using exception handling to actually handle
This is really a discussion question, and the answer depends on the design of your system.
My instinct is always a blanket never, but i've seen several systems implement business errors using exceptions. I personally find it disgusting, but I really understand the advantage of breaking a business process as soon as you know that it failed, handling your failure ( e.g. rolling back your Unit Of Work), and returning the error to the caller, perhaps with added information.
one possible disadvantage, is that it's really straightforward to do the error handling across several different classes, so that the definition of what happens when the process fails is really hard to deduce from the code.
Anyway there is no single answer here, you need to weigh both approaches, and sometimes combine them.
regarding your example, I don't see any advantages for using exceptions for flow control, especially in a "good" (designed to work) scenario.