У меня есть PHP-скрипт, который запускает запросы к базе данных. Теперь, если запрос терпит неудачу, я должен вызвать ошибку или выбросить исключение? Я заметил, что если я сделаю последнее, выполнение скрипта остановится после обращения к исключению.
Мой код выглядит следующим образом:
if (!$this->connection[0]->query($this->query)) throw new Exception($this->connection[0]->error);
Каковы плюсы и минусы использования исключений для подобных случаев (неудачные запросы)?
зависит от вашей общей стратегии обработки ошибок и запросов, переданных этой функции. Выбросы Исключения сами по себе – очень хорошая идея, ИМХО, если их где-то поймали и обработали.
Каковы плюсы и минусы использования исключений для подобных случаев (неудачные запросы)?
Просто:
Тем не менее, я думаю, вы можете сосредоточиться на неправильном вопросе. Вы должны обращаться с исключениями, когда они могут произойти, но они должны произойти очень, очень редко. Если ваш запрос имеет разумные шансы на сбой, тогда сам запрос должен быть вашим фокусом, а не механизмом обработки ошибок.
Под этим я подразумеваю улучшение проверки любого ввода вашего запроса, который может заставить его задушить, а не скорость запроса как средство для компенсации любого удара производительности из-за обработки ошибок. Другими словами, выясните, что приведет к сбою вашего запроса и гарантирует, что такое состояние не будет достигнуто.
Рассмотрите эту аналогию: если вы направляетесь на озеро в потенциально просачивающуюся лодку (ваш запрос), вы не должны так беспокоиться о том, чтобы носить гидрокостюм (обработку ошибок), поскольку вы должны быть уверены, что лодка водонепроницаемая ,
Я думаю, это зависит от того, насколько плоха ситуация, если запрос терпит неудачу. Если критически важно, чтобы запрос выполнялся должным образом, то определенно перейдите к исключению.
Независимо от того, что вы решите, убедитесь, что вы обрабатываете ошибку / исключение изящно. (try..catch и т. д.).
Вы также должны взглянуть на этот вопрос stackoverflow .
Если это для внешнего веб-сайта, я стараюсь подробно обрабатывать ошибки на стадии разработки. После того, как сайт готов к работе в прямом эфире, я стараюсь не давать слишком подробным сведениям конечным пользователям об ошибках, особенно данных базы данных по соображениям безопасности.
Это не какой-то набор ответов в каменном ответе, но помните о безопасности при отчетности и обработке ошибок на внешних сайтах. Просто примечание, поскольку это может быть не внешний веб-сайт.