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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы