Флаг действительно был бы лучшим вариантом.
Исключения следует использовать только для этого, обработки неожиданного поведения, а не для управления рабочим процессом вашей программы.Имейте в виду, что генерирование исключения заставит все вызывающие методы обрабатывать его явно, и это сделает ваш код много более связанным, чем это необходимо.