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
If you are dealing with an error condition which is actually a part of the business logic, it is OK to use Exceptions. For example:
try{
// register new user
if(getUser(name) != null)
throw new MyAppException("Such user already exists");
//other registration steps......
}catch(MyAppException ex){
sendMessage(ex.getMessage());
}