Распространенная мантра дизайна - говорить, что исключения не должны использоваться в качестве GOTO (в основном то, что вы делаете в этом случае). Вместо этого вы должны полагаться на возвращаемое значение.
Исключения всегда должны рассматриваться как исключение: исключения. Если происходит что-то неожиданное, что код не готов обработать (исключение), вы должны выбросить (и, надеюсь, поймать) исключение, чтобы обработать его соответствующим образом.
Использование исключения для успеха нарушает поток управления вашего кода. Даже использование исключения для неисключительных ошибок (например, ожидаемый сбой проверки) является оскорбительным.
Там, где я работаю, мы регистрируем все исключения, которые выдает наш веб-сайт, и я просматриваю их каждый день. Я был бы очень раздражен, если бы правильно работающий код добавил тонну исключений в этот список.