Хочу ли я сделать исключение или ошибку в этом скрипте PHP?

У меня есть PHP-скрипт, который запускает запросы к базе данных. Теперь, если запрос терпит неудачу, я должен вызвать ошибку или выбросить исключение? Я заметил, что если я сделаю последнее, выполнение скрипта остановится после обращения к исключению.

Мой код выглядит следующим образом:

if (!$this->connection[0]->query($this->query)) throw new Exception($this->connection[0]->error); 

Каковы плюсы и минусы использования исключений для подобных случаев (неудачные запросы)?

зависит от вашей общей стратегии обработки ошибок и запросов, переданных этой функции. Выбросы Исключения сами по себе – очень хорошая идея, ИМХО, если их где-то поймали и обработали.

Каковы плюсы и минусы использования исключений для подобных случаев (неудачные запросы)?

Просто:

  • Плюсы : ваше приложение может обрабатывать неудавшийся запрос изящно, регистрировать его, если нужно, и двигаться дальше.
  • Минусы : производительность.

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

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

Рассмотрите эту аналогию: если вы направляетесь на озеро в потенциально просачивающуюся лодку (ваш запрос), вы не должны так беспокоиться о том, чтобы носить гидрокостюм (обработку ошибок), поскольку вы должны быть уверены, что лодка водонепроницаемая ,

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

Независимо от того, что вы решите, убедитесь, что вы обрабатываете ошибку / исключение изящно. (try..catch и т. д.).

Вы также должны взглянуть на этот вопрос stackoverflow .

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

Это не какой-то набор ответов в каменном ответе, но помните о безопасности при отчетности и обработке ошибок на внешних сайтах. Просто примечание, поскольку это может быть не внешний веб-сайт.