Оператор управления ошибкамиУправление ошибками
PHP поддерживает один оператор управления ошибками: знак @.
В случае если он предшествует какому-либо выражению в PHP-коде, любые
сообщения об ошибках, генерируемые этим выражением, будут подавлены.
Если пользовательская функция обработчика ошибок установлена функцией
set_error_handler, она всё равно будет вызываться,
даже если диагностика была подавлена.
До версии PHP 8.0.0 функция error_reporting,
вызываемая внутри пользовательского обработчика ошибок,
всегда возвращала 0, если ошибка была подавлена оператором @.
Начиная с PHP 8.0.0 она возвращает значение этого (побитового) выражения:
E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE.
Любое сообщение об ошибке, сгенерированное выражением,
доступно в элементе массива с ключом «message»,
возвращаемого функцией error_get_last.
Результат этой функции будет меняться при каждой ошибке,
поэтому его необходимо проверить заранее.
Оператор @ работает только с
выражениями.
Есть простое правило: если что-то возвращает значение,
значит, можно указать перед ним оператор @.
Например, можно указать оператор @ перед
именем переменной, произвольной функцией,
вызовом выражения include и т. д.
При этом нельзя указывать этот оператор
перед определением функции или класса, условными конструкциями, например:
if, &foreach; и т. д.
До PHP 8.0.0 оператор @ мог подавлять критические ошибки,
которые прерывали выполнение скрипта.
Например, добавление оператора @ к вызову несуществующей функции,
когда она недоступна или вызвана с опечаткой,
приведёт к прерыванию выполнения скрипта без указания причины.
&reftitle.seealso;
error_reportingОбработка ошибок и функции логирования