Оператор подавления ошибок в PHP
В PHP имеется оператор подавления ошибок. В большинстве случаев это нужно для того, чтобы по-своему обработать ошибку. Давайте разберём с Вами оператор подавления ошибок в PHP более подробно.
Оператор подавления ошибок (пишется он так "@") служит для запрета вывода информации об этих ошибках. Использовать данный оператор можно рядом с тем, что возвращает результат. Например, перед различными функциями, переменными и прочим. Перед служебными конструкциями его нельзя использовать, поскольку они ничего не возвращают. К таким конструкциям относятся циклы, условные операторы, объявления функций и классов.
Теперь пример использования оператора подавления ошибок в PHP:
<?php
$handler = @fopen("my_file.txt", "r");
if (!$handler) echo "Ошибка при открытии файла";
Файла my_file.txt не существует. И если мы уберём "@", то у нас выведется ошибка, которая нам совсем не нужна, поскольку мы по-своему обрабатываем случай, если файл не открывается или не существует.
Второй очень популярный пример использования "@" при подключении к базе данных:
<?php
$mysqli = @new mysqli("localhost", "root", "123", "mydb");
if ($mysqli->connect_errno) echo "Ошибка при подключении";
В данном случае мы указали неверные данные для подключения к базе данных. Если мы уберём "@", то PHP нам сразу же выведет ошибку. Однако, мы хотим её обработать сами, поэтому ставим оператор подавления ошибок, а после уже смотрим: возникли ошибки или нет.
Я показал только 2 самых популярных примера использования оператора подавления ошибок в PHP, на практике же есть ещё масса примеров использования данного оператора. Однако, использовать его только для того, чтобы убрать постоянно возникающие ошибки на сайте, не стоит, так как это уже, скорее всего, ошибка в самом коде.
-
- Михаил Русаков
Комментарии (4):
Михаил, какие нужно устанавливать настройки, как следует обрабатывать ошибки на "боевом" сервере, чтобы пользователю показать красивую страничку с ошибкой, и записать текст ошибки в файл?
Ответить
находил функции error_log, set_error_handler, trigger_error, но применения им не нашел. Возможно нужно отключить вывод ошибок, установить свой обработчик ошибок, который будет вести логи и выводить ошибку пользователю?
Ответить
http://myrusakov.ru/php-errors-handler.html
Ответить
очень плохая практика прятать ошибки. с ошибками нужно бороться, а не прятать =)
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.