Operadores de controle de erro

O PHP suporta um operador de controle de erro : o sinal ' arroba ' (@ ) . Quando ele precede uma expressão em PHP , qualquer mensagem de erro que possa ser gerada por aquela expressão será ignorada .

Se o recurso track_errors estiver habilitado , qualquer mensagem de erro gerada pela expressão será gravada na variável global $php_errormsg . Esta variável será sobrescrita em cada erro , assim verifique-a constantemente se você quiser usá-la .

 
?php

 
/

 
*

 
Erro

 
de

 
arquivo

 
intencional

 
*

 
/

 
$my_file

 
=

 
@file

 
(

 
'arquivo_nao_existente'

 
)

 
ou

 
die

 
("Falha

 
abrindo

 
arquivo

 
:

 
'$php_errormsg'")

 
;

 
/

 
/

 
Isto

 
funciona

 
para

 
qualquer

 
expressão

 
,

 
não

 
apenas

 
para

 
funções

 
:

 
$value

 
=

 
@$cache[$key]

 
;

 
/

 
/

 
você

 
não

 
receberá

 
nenhum

 
aviso

 
se

 
a

 
chave

 
$key

 
não

 
existir

 
.

 

?





Nota : O operador @ funciona somente em expressões . Uma regra simples para lembrar disso : se você pode pegar o valor de alguma coisa , você pode prefixar isso com o @ . Assim , você pode prefixar chamadas de variáveis , funções e include( ) s , constantes e afins . Você não pode prefixar definições de funções ou classe , estruturas condicionais como o if , foreach e assim por diante .

Veja também : error_reporting( ) .

Nota : O prefixo de controle de erro " @ " não desabilita mensagens que são resultado de erros de interpretação (parse errors ) .

Atenção

Atualmente , o operador de controle de erro " @ " sempre desativa mensagens de erro , mesmo para erros críticos , que terminam a execução de scripts . Além de outras coisas , isto significa que se você usar " @ " para suprimir erros de certas funções e elas não estiverem disponíveis ou com tipos incorretos , o script vai parar exatamente sem nenhuma indicação da razão .