Обработка ошибок базы данных - PullRequest
1 голос
/ 12 октября 2011

Я использую инфраструктуру MVC в своем приложении, поэтому в настоящее время при обнаружении ошибки при работе с базой данных в моей модели я выдаю исключения обратно в контроллер.

//db querying
//doing more db querying...
if (error)
    throw new ApiException('Unable to connect to User database', 1, 500);
else if (another type of error)
    throw new StampApiException('Could not retrieve the User', 12, 500);

return $user;

Большую часть времени я нахожу это хорошим, поскольку я могу просто заставить контроллер выводить ошибку на экран, сохраняя все коды ошибок и т. Д. В модели. Но иногда это может сделать код довольно запутанным и сложным для работы.

Это хороший способ обработки таких ошибок? Или есть лучший / более стандартный способ?

1 Ответ

1 голос
/ 12 октября 2011

Fisrt, я бы сказал, что пользователю не нужно знать, является ли проблема базой данных, паролем администратора или памятью. Просто создайте страницу технической ошибки для пользователя и запишите подробности ошибки на сервере для вашей отладки.

Для технических проблем, о которых вы говорите, лучше всего иметь централизованное управление для их решения, то есть вывести страницу с ошибкой. Обычное место - диспетчер диспетчера. Если вы используете фреймворк, этот механизм должен существовать (например, Symfony). Таким образом, вам не нужно связываться с этими исключениями в вашем реальном коде.

Точно так же, как вы нашли это, лучшая политика - ловить исключение, только когда вы можете что-то с этим сделать.

Например:

  • «проблема доступа к базе данных» может быть автоматически устранена диспетчер. Таким образом, вы не поймаете это в своем коде и дайте его центральное лечение
  • «пользователь не найден» может получить специальную обработку от вашего контроллера, предложить создание например. Так что вы ловите это.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...