mirror of
https://github.com/php/doc-es.git
synced 2026-03-23 23:12:09 +01:00
78 lines
3.4 KiB
XML
78 lines
3.4 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- EN-Revision: 16934048f79c6e117cd16a23c09c1b2ea502e284 Maintainer: PhilDaiguille Status: ready -->
|
|
<!-- Reviewed: no -->
|
|
<sect1 xml:id="language.operators.errorcontrol">
|
|
<title>Operador de control de errores</title>
|
|
<titleabbrev>Control de errores</titleabbrev>
|
|
<simpara>
|
|
PHP soporta un operador de control de errores: el arroba (<literal>@</literal>).
|
|
Cuando este operador se añade como prefijo a una expresión PHP, los diagnósticos de errores que pueden ser generados por esta expresión serán ignorados.
|
|
</simpara>
|
|
|
|
<para>
|
|
Si un gestor de errores personalizado es definido con <function>set_error_handler</function>, será llamado aún si el diagnóstico ha sido ignorado.
|
|
</para>
|
|
|
|
<warning>
|
|
<para>
|
|
Anterior a PHP 8.0.0, la función <function>error_reporting</function> llamada en el gestor de errores personalizado siempre retornaba <literal>0</literal> si el error fue ignorado con el operador <literal>@</literal>.
|
|
A partir de 8.0.0, retorna el valor de esta expresión (bit a bit): <literal>E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE</literal>.
|
|
</para>
|
|
</warning>
|
|
|
|
<simpara>
|
|
Todos los mensajes de error generados por la expresión están disponibles en el elemento <literal>"message"</literal> del array retornado por la función <function>error_get_last</function>. El resultado de la función cambiará con cada error, por lo tanto, es conveniente verificarlo frecuentemente.
|
|
</simpara>
|
|
<para>
|
|
<example>
|
|
<title>Error de fichero intencional</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$mon_fichier = @file ('non_persistent_file') or
|
|
die ("Imposible abrir el fichero: El error es: '" . error_get_last()['message'] . "'");
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>La expresión de eliminación</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
// Esto funciona con cualquier expresión, no solo con funciones
|
|
$value = @$cache[$key];
|
|
// la línea anterior no mostrará una alerta si la clave $key del array no existe
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<note>
|
|
<simpara>
|
|
El operador <literal>@</literal> solo funciona con las <link linkend="language.expressions">expresiones</link>.
|
|
La regla general es: si es posible tomar el valor de algo, entonces se puede preponer el operador <literal>@</literal> a este.
|
|
Por ejemplo, puede ser prepuesto a variables, llamadas de funciones, ciertas llamadas a construcciones de lenguaje (por ejemplo, <function>include</function>), etc.
|
|
No puede ser prepuesto a definiciones de funciones o clases o estructuras condicionales como <literal>if</literal> y <literal>foreach</literal>, etc.
|
|
</simpara>
|
|
</note>
|
|
<warning>
|
|
<para>
|
|
Anterior a PHP 8.0.0, era posible que el operador <literal>@</literal> desactivara los errores críticos que terminaban la ejecución del script.
|
|
Por ejemplo, preponer <literal>@</literal> a una llamada de una función que no existe, que esté indisponible o mal escrita, causaba que el script terminara sin ninguna indicación de por qué.
|
|
</para>
|
|
</warning>
|
|
|
|
<sect2 role="seealso">
|
|
&reftitle.seealso;
|
|
<para>
|
|
<simplelist>
|
|
<member><function>error_reporting</function></member>
|
|
<member><link linkend="ref.errorfunc">Gestión de Errores y Funciones de Logging</link></member>
|
|
</simplelist>
|
|
</para>
|
|
</sect2>
|
|
</sect1>
|