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