Оператори
PHP Manual

Оператори за контрол на грешките

PHP поддържа един оператор за контрол на грешки: символът at (@). Когато бъде поставен пред израз в PHP, всички съобщения за грешка, които биха били генерирани от този израз, ще бъдат пренебрегнати.

Ако свойството track_errors е включено, всички съобщения за грешка, генерирани от израза, ще бъдат запазени в променливата $php_errormsg. Тази променлива ще бъде презаписвана при всяка грешка, така че ако искате да я използвате трябва да я проверявате възможно най-рано.

<?php
/* Intentional file error */
$my_file = @file ('non_existent_file') or
     die (
"Несполучливо отваряне на файл: грешката беше '$php_errormsg'");

// това работи за всякакви изрази, не само за функции:
$value = @$cache[$key]; 
// няма да изведе съобщение (notice) ако ключът $key не съществува.

?>

Забележка: Операторът @ работи единствено върху изрази. Правилото е: ако можете да вземете стойността на нещо, то можете да поставите и оператора @ пред него. Например, можете да го слагате пред променливи, извиквания на функции и включвания посредством include(), пред константи, и т.н. Не можете да го поставяте пред дефиниции на функции или класове, или пред условни структури като if и foreach, и т.н.

Вж. също error_reporting() и раздела от ръководството Функции за обработка на грешки и дневници.

Предупреждение

Понастоящем употребата на оператора за контрол на грешки "@" ще изключи отчитането на грешки дори и за критични грешки, които прекъсват изпълнението на скрипта. Това също означава, че ако използвате "@", за да подтиснете грешките от дадена функция, и ако последната не е налична или пък е написана погрешно, скриптът ще умре точно на това място без никаква индикация за причината.


Оператори
PHP Manual