Конечно же в коде нужно использовать исключения. И в тестировании они проще и это просто логично! Если вы используете типизацию в php и вам должен возвратиться объект City, то возвращая строку или массив вы получите ошибки. Тут без исключений уже не обойтись. Поэтому, если вы хотите писать код правильно - вам нужно использовать в домене только исключения!
А try-catch можно инкапсулировать в коде, если не нравится.