Задать вопрос

Как правильно обрабатывать ошибки движка?

Допустим, у нас есть класс manager с методом get(), отвечающим за получение данных объекта из БД. Клиентский код дёргает этот метод - он должен вернуть объект.
Вопрос - как должен вести себя экземпляр класса и клиентский код, если например объекта с запрошенным ключем в БД не оказалось?

Вариант 1. Метод get() при неудачном поиске в БД возвращает код ошибки, например, -1, клиент проверяет - пришел объект или код. Если это не экземпляр нужного класса, через условный оператор проверяется номер ошибки, и бросается исключение, которое в конце клиентского кода отлавливается и пишется в лог (юзеру мы ничего не показываем, кроме "извините, произошла ошибка").

Вариант 2. Сам метод get() бросает исключение с текстом вроде "item was not fund", которое также отлавливается в клиентском коде. Но тут вопрос - если объект не найден в БД - это исключение, или всё-таки один из вариантов нормальной работы, при котором можно просто вернуть код?
  • Вопрос задан
  • 150 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
SowingSadness
@SowingSadness
web-разработчик
Во всех ORM реализовано два вида:
- get(id) возвращает объект по ключу и вызывает ошибку, если не нашел
- find(id) возвращает объект по ключу и Null если не найден объект.

Пользоваться ими нужно в зависимости от контекста.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽