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