mirror of
https://github.com/php/doc-fr.git
synced 2026-03-24 15:12:13 +01:00
96 lines
3.5 KiB
XML
96 lines
3.5 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- EN-Revision: 16934048f79c6e117cd16a23c09c1b2ea502e284 Maintainer: yannick Status: ready -->
|
|
<!-- Reviewed: no -->
|
|
<sect1 xml:id="language.operators.errorcontrol">
|
|
<title>Opérateur de contrôle d'erreur</title>
|
|
<titleabbrev>Contrôle d'erreur</titleabbrev>
|
|
<simpara>
|
|
PHP supporte un opérateur de contrôle d'erreur : l'arobase (<literal>@</literal>).
|
|
Lorsque cet opérateur est ajouté en préfixe d'une
|
|
expression PHP, les diagnostics d'erreurs qui peuvent être
|
|
générés par cette expression seront ignorés.
|
|
</simpara>
|
|
|
|
<para>
|
|
Si un gestionnaire d'erreur personnalisé est défini avec
|
|
<function>set_error_handler</function>, il sera quand même appelé même si
|
|
le diagnostic a été ignoré.
|
|
</para>
|
|
|
|
<warning>
|
|
<para>
|
|
Avant PHP 8.0.0, le <function>error_reporting</function> appelé dans le gestionnaire d'erreur
|
|
personnalisé retournait toujours <literal>0</literal> si l'erreur a été ignorée avec l'opérateur <literal>@</literal>.
|
|
À partir de 8.0.0, il retourne la valeur de cette expression (bit à bit) :
|
|
<literal>E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR | E_RECOVERABLE_ERROR | E_PARSE</literal>.
|
|
</para>
|
|
</warning>
|
|
|
|
<simpara>
|
|
Tous les messages d'erreur générés par l'expression sont disponibles
|
|
dans l'élément <literal>"message"</literal> du tableau retourné par
|
|
la fonction <function>error_get_last</function>. Le résultat de la fonction
|
|
changera à chaque erreur, aussi, il convient de le vérifier souvent.
|
|
</simpara>
|
|
<para>
|
|
<example>
|
|
<title>Erreur de fichier intentionnelle</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$mon_fichier = @file ('non_persistent_file') or
|
|
die ("Impossible d'ouvrir le fichier : L'erreur est : '" . error_get_last()['message'] . "'");
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>L'expression de suppression</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
// Cela fonctionne avec n'importe quelle expression, pas seulement les fonctions
|
|
$value = @$cache[$key];
|
|
// la ligne ci-dessus n'affichera pas d'alerte si la clé $key du tableau n'existe pas
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
<note>
|
|
<simpara>
|
|
L'opérateur <literal>@</literal> ne fonctionne qu'avec les
|
|
<link linkend="language.expressions">expressions</link>.
|
|
La règle générale est : s'il est possible de prendre la valeur de quelque
|
|
chose alors, on peut préfixer l'opérateur <literal>@</literal> à celui-ci.
|
|
Par exemple, il peut être préfixé devant les variables, appels de fonctions,
|
|
certains appels aux constructions de langages (e.g.
|
|
<function>include</function>), etc.
|
|
Il ne peut pas être préfixé devant les définitions de fonctions ou de classes
|
|
ou structures conditionnelles telles que <literal>if</literal> et &foreach;, etc.
|
|
</simpara>
|
|
</note>
|
|
<warning>
|
|
<para>
|
|
Avant PHP 8.0.0, il était possible pour l'opérateur
|
|
<literal>@</literal> de désactiver les erreurs critiques qui terminaient
|
|
l'exécution du script.
|
|
Par exemple, préfixer <literal>@</literal> à un appel d'une fonction qui
|
|
n'existe pas, en étant indisponible ou mal orthographiée, entraînait l'arrêt
|
|
du script sans aucune indication de la raison.
|
|
</para>
|
|
</warning>
|
|
|
|
<sect2 role="seealso">
|
|
&reftitle.seealso;
|
|
<para>
|
|
<simplelist>
|
|
<member><function>error_reporting</function></member>
|
|
<member><link linkend="ref.errorfunc">Gestion d'Erreur et fonction de Logging</link></member>
|
|
</simplelist>
|
|
</para>
|
|
</sect2>
|
|
</sect1>
|