PHP поддерживает один оператор контроля ошибок: знак at (@)
. При добавлении к выражению в PHP любые сообщения об ошибках, которые могут быть сгенерированы этим выражением, будут игнорироваться.
Если вы установили пользовательский обработчик ошибок с помощью set_error_handler()
, то он все равно будет вызываться, но этот пользовательский обработчик ошибок может (и должен) вызывать error_reporting()
, который вернет 0
при вызове, вызвавшем ошибку предшествовал @
.
<?php
/* Intentional file error */
$my_file = @file ('non_existent_file') or
die ("Failed opening file: error was '$php_errormsg'");
// this works for any expression, not just functions:
$value = @$cache[$key];
// will not issue a notice if the index $key doesn't exist.
?>
Примечание: -
1) @ -оператор работает только с выражениями.
2) Простое правило: если вы можете получить значение чего-либо, вы можете добавить к нему оператор @. Например, вы можете добавить его к переменным, функции и включить вызовы, константы и так далее. Вы не можете добавить его к определениям функций или классов, или к условным структурам, таким как if и foreach и т. Д.
Внимание: -
В настоящее время префикс оператора «@» даже отключается
отчеты об ошибках для критических ошибок, которые прекратят работу скрипта
выполнение. Среди прочего, это означает, что если вы используете «@» для
подавить ошибки определенной функции, либо она недоступна
или был опечатка, сценарий умрет прямо там без
указание на то, почему.