Поток программы должен быть как можно более прямой (поскольку даже тогда приложения становятся довольно сложными) и использовать стандартные структуры потока управления. Следующим разработчиком, который прикоснется к коду, может быть не вы, и (по праву) неправильно понимаете нестандартный способ использования исключений вместо условных для определения потока управления.
Я борюсь с немного другим уклоном по этой проблеме прямо сейчас во время какого-то устаревшего рефакторинга кода.
Самая большая проблема, которую я обнаружил при таком подходе, заключается в том, что использование try / catch нарушает нормальный программный процесс.
В приложении, над которым я работаю (и это отличается от образца, который вы применили), исключения используются для передачи из вызова метода определенного результата (например, для поиска номера счета и его отсутствия) произошло. Это создает код спагетти на стороне клиента, поскольку вызывающий метод (во время неисключительного события или обычного события варианта использования) выходит из кода, который он выполнял до вызова, и в блок catch. Это повторяется во многих очень длинных методах много раз, что делает код очень легким для неправильного чтения.
В моей ситуации метод должен возвращать значение в соответствии со своей подписью для всех, кроме действительно исключительных событий. Механизм обработки исключений предназначен для выбора другого пути при возникновении исключения (попытайтесь выполнить восстановление из метода, чтобы вы все равно могли нормально вернуться).
На мой взгляд, вы могли бы сделать это, если вы поместите блоки try / catch очень ; но я думаю, что это дурная привычка, которая может привести к тому, что код, который очень легко будет неверно интерпретировать, поскольку вызывающий код будет интерпретировать любое выброшенное исключение как сообщение типа 'GOTO' , изменяя ход программы. Я боюсь, что, хотя этот случай не попадает в эту ловушку, выполнение этого часто может привести к привычке кодирования, ведущей к кошмару, в котором я сейчас живу.
И этот кошмар не приятен.