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.
Замечание:
Оператор @ не подавляет вывод ошибок, возникающих на
стадии синтаксического разбора скрипта.
Внимание
На сегодняшний день оператор @ подавляет
вывод сообщений даже о критических ошибках прерывающих работу
скрипта. Помимо всего прочего, это означает, что если вы использовали
@ для подавления ошибок, возникающих при работе какой-либо
функции, в случае если она недоступна или написана неправильно, дальнейшая
работа скрипта будет остановлена без каких-либо уведомлений.