Это плохо для выдавания исключения для возврата ошибок сервера, например, 404 страницы, Не Найденные?

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

Я должен избегать использования исключений, когда я хочу возвратить код ошибки сервера пользователю (например, 404 страницы, Не Найденные)? Если так, я должен записать свой собственный класс обработки ошибок?

7
задан Peter Horne 7 May 2010 в 19:21
поделиться

4 ответа

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

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

Если вопрос заключается в том, что должно произойти, когда запрашивается несуществующая статья/блог/элемент/и т.д. - ну, если код, отвечающий за отображение информации, может просто установить код ответа, то, конечно, не используйте исключения.

Если вы используете фреймворк MVC, и ваши отдельные контроллеры могут устанавливать код ответа, то позвольте им это сделать.

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

8
ответ дан 6 December 2019 в 23:02
поделиться

Я думаю вы говорите о двух разных вещах:

  1. Ошибки, которые возникают, когда что-то пошло не так в самой структуре, или когда структура используется так, что она не должна работать.
  2. Коды статуса HTTP (в теме упоминается 404 Page Not Found, это код статуса).

В первых ситуациях выбрасывание исключения является правильным способом, если вы хотите решить проблему с помощью объектно-ориентированного подхода. Коды состояния HTTP являются частью протокола HTTP, и ваша платформа никоим образом не должна их обрабатывать.

0
ответ дан 6 December 2019 в 23:02
поделиться

Исключения следует ограничивать ТОЛЬКО теми случаями, когда приложение действительно не может справиться с ситуацией.

Как вы сказали, генерировать исключение из-за неверного пароля очень неправильно.

Единственные ситуации типа ошибки сервера, с которыми я могу столкнуться, - это когда требуемый ресурс (например, ваш сервер sql) недоступен.

Кроме того, отказано в доступе и т. Д. - все это распространенные случаи, которые ваше приложение должно иметь нормальный способ обработки.

1
ответ дан 6 December 2019 в 23:02
поделиться

Исключения не являются механизмами потока управления.

2
ответ дан 6 December 2019 в 23:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: