Руководство по PHP
Пред. | Глава 15. Операторы | След.

# Оператор управления ошибками

PHP поддерживает один оператор управления ошибками: знак @. В случае, если он предшествует какому-либо выражению в PHP-коде, любые сообщения об ошибках, генерируемые этим выражением, будут проигнорированы.

В случае, если установлена опция track_errors, все генерируемые сообщения об ошибках будут сохраняться в переменной $php_errormsg. Эта переменная будет перезаписываться при возникновении каждой новой ошибки, поэтому в случае необходимости проверяйте ее сразу же.

`<?php // Преднамеренная ошибка при работе с файлами $my_file = @file ('non_existent_file') or die ("Failed opening file: error was '$php_errormsg'"); // работает для любых выражений, а не только для функций $value = @$cache[$key]; // В случае если ключа $key нет, сообщение об ошибке не будет отображено ?>`

> Замечание: Оператор @ работает только с выражениями. Есть простое правило: если произвольная языковая конструкция возвращает значение, значит вы можете использовать предшествующий ей оператор @. Например, вы можете использовать @ перед именем переменной, произвольной функцией или вызовом include(), константой и так далее. В то же время вы не можете использовать этот оператор перед определением функции или класса, условными конструкциями, такими как if или foreach.

Также ознакомьтесь с описанием функции error_reporting() и соответствующим разделом документации Обработка ошибок и функции логирования.

> Замечание: Оператор @ не подавляет вывод ошибок, возникающих на стадии синтаксического разбора скрипта.

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

Пред. | Начало | След.
Операторы сравнения | Уровень выше | Операторы исполнения