PHP ofrece soporte para un operador de control de errores: el
signo de arroba (@). Cuando es colocado al comienzo de una
expresión en PHP, cualquier mensaje de error que pudiera
generarse a causa de esa expresión será ignorado.
Si la característica track_errors
está habilitada, cualquier mensaje de error generado por la
expresión será almacenado en la variable $php_errormsg. La
variable será sobrescrita en cada instancia de error,
así que realice sus chequeos de forma temprana si quiere
usarla.
<?php /* Error intencional de archivo */ $mi_archivo = @file ('archivo_que_no_existe') or die ("La apertura de archivo ha fallado: el error fue '$php_errormsg'");
// esto funciona con cualquier expresion, no solo con funciones: $valor = @$cache[$llave]; // no producira una anotacion si el indice $llave no existe.
?>
Nota:
El operador @ trabaja sólo sobre
expresiones. Una
simple regla de oro es: si usted puede tomar el valor de algo,
entonces puede usar el operador @ sobre ese algo. Por ejemplo,
puede usarlo al inicio de variables, llamadas a funciones y
sencencias include(), constantes, y así
sucesivamente. No puede usarlo sobre definiciones de
función o clase, ni sobre estructuras condicionales
como if y
foreach, y así sucesivamente.
Nota:
El operador de prefijo "@" para control de errores no
deshabilitará los mensajes que son resultado de errores en
la fase de análisis sintáctico.
Aviso
En la actualidad, el operador de prefijo "@" para control de
errores deshabilitará incluso el reporte de errores en
casos de fallos críticos que terminarán la
ejecución del script. Entre otras cosas, esto quiere decir
que si usa "@" para eliminar los errores de una cierta
función, y ésta no se encuentra disponible o ha
sido escrita de forma incorrecta, el script se detendrá en
ese punto sin dar indicación alguna del motivo.