Максим, Да я понимаю :)
В Laravel то же самое.
Есть Global ExceptionHandler , который перехватывает исключения на верхнем уровне, представляя их как JSON (для API) или как HTML.
Но иногда требуется обработать функцию на все возможные случаи, и если она выбрасывает исключение - произвести какие-то действия, а не просто выдать это в АПИ-шку.
Дело в том, что почти все функции возвращают некий набор данных:
[ 'data' => [.. city, adress, и т.д.], 'status' => 'ok' ]
либо
[ 'data' => [empty array()], 'status' => 'error' ]
Фронтенд получая пустые данные и состояние ошибки, сам решает, что с этим делать.
Получился своего рода "унифицированный" язык общения между функциями и классами.
Нежели возвращать либо City либо throw new Exception NotFoundCity или CityServiceUnreachable
Но конечно - это все же велосипед.
Да и в тестировании исключения проще - соглашусь, Вы правы.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Уже подумал, начал рефакторинг (в связи с чем и задал вопросы на Тостер).
Пока с переменным успехом :)