mirror of
https://github.com/macintoshplus/doc-fr.git
synced 2026-04-30 04:03:10 +02:00
b8daeaab85
git-svn-id: https://svn.php.net/repository/phpdoc/fr/trunk@78204 c90b9560-bf6c-de11-be94-00142212c4b1
190 lines
7.1 KiB
XML
190 lines
7.1 KiB
XML
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!-- splitted from ./fr/functions/errorfunc.xml, last change in rev 1.10 -->
|
|
<!-- last change to 'set-error-handler' in en/ tree in rev 1.1 -->
|
|
<refentry id="function.set-error-handler">
|
|
<refnamediv>
|
|
<refname>set_error_handler</refname>
|
|
<refpurpose>
|
|
Choisi une fonction utilisateur comme gestionnaire d'erreurs
|
|
</refpurpose>
|
|
</refnamediv>
|
|
<refsect1>
|
|
<title>Description</title>
|
|
<methodsynopsis>
|
|
<type>string</type><methodname>set_error_handler</methodname>
|
|
<methodparam><type>string</type><parameter>error_handler</parameter></methodparam>
|
|
</methodsynopsis>
|
|
<para>
|
|
<function>set_error_handler</function> choisit la fonction utilisateur
|
|
<parameter>error_handler</parameter> pour gérer
|
|
les erreurs dans un script. Retourne un pointeur sur l'ancienne fonction
|
|
de gestion des erreurs (si il y en avait une), ou &false;, en cas d'erreur.
|
|
<function>set_error_handler</function> sert à définir votre
|
|
propre gestionnaire d'erreurs, qui prendra en charge leur traitement durant
|
|
l'exécution d'un script. Cela peut être utile lorsque vous
|
|
devez repérer des erreurs critiques lors d'un nettoyage de bases, ou
|
|
bien si vous souhaitez générer une erreur dans certaines
|
|
conditions (avec <function>trigger_error</function>).
|
|
</para>
|
|
<para>
|
|
La fonction utilisateur doit accepter deux arguments : le code de l'erreur,
|
|
et une chaîne décrivant l'erreur. L'exemple ci dessous montre
|
|
le traitement d'exceptions en déclenchant des erreurs, et en les
|
|
gérant avec une fonction utilisateur :
|
|
<example>
|
|
<title>
|
|
Traitement des erreurs avec <function>set_error_handler</function> et
|
|
<function>trigger_error</function>
|
|
</title>
|
|
<programlisting role="php">
|
|
<?php
|
|
// redéfinit les constantes utilisateurs - PHP 4 seulement
|
|
define (FATAL,E_USER_ERROR);
|
|
define (ERROR,E_USER_WARNING);
|
|
define (WARNING,E_USER_NOTICE);
|
|
// Fixe le niveau de rapport d'erreur pour ce script
|
|
error_reporting (FATAL + ERROR + WARNING);
|
|
// Fonction de traitement des erreurs
|
|
function myErrorHandler ($errno, $errstr) {
|
|
switch ($errno) {
|
|
case FATAL:
|
|
echo "<B>FATAL</B> [$errno] $errstr<br>\n";
|
|
echo " Erreur fatale à la ligne ".__LINE__." du fichier ".__FILE__;
|
|
echo ", PHP ".PHP_VERSION." (".PHP_OS.")<br>\n";
|
|
echo "Aborting...<br>\n";
|
|
exit -1;
|
|
break;
|
|
case ERROR:
|
|
echo "<B>ERREUR</B> [$errno] $errstr<br>\n";
|
|
break;
|
|
case WARNING:
|
|
echo "<B>ALERTE</B> [$errno] $errstr<br>\n";
|
|
break;
|
|
default:
|
|
echo "Erreur inconnue de type : [$errno] $errstr<br>\n";
|
|
break;
|
|
}
|
|
}
|
|
// fonction qui teste la gestion d'erreur
|
|
function scale_by_log ($vect, $scale) {
|
|
if ( !is_numeric($scale) || $scale <= 0 )
|
|
trigger_error("log(x) pour x <= 0 est indéfini, vous avez passé: scale = $scale",
|
|
FATAL);
|
|
if (!is_array($vect)) {
|
|
trigger_error("Vecteur d'entrée incorrect : un tableau de valeurs est attendu : ", ERROR);
|
|
return null;
|
|
}
|
|
for ($i=0; $i<count($vect); $i++) {
|
|
if (!is_numeric($vect[$i]))
|
|
trigger_error("La valeur à la position $i n'est pas un nombre. On utilise 0 (zéro) à la place",
|
|
WARNING);
|
|
$temp[$i] = log($scale) * $vect[$i];
|
|
}
|
|
return $temp;
|
|
}
|
|
// Ancienne fonction de traitement des erreurs
|
|
$old_error_handler = set_error_handler("myErrorHandler");
|
|
// Génération de quelques erreurs : définition d'un tableau avec des éléments non numériques
|
|
echo "vector a\n";
|
|
$a = array(2,3,"foo",5.5,43.3,21.11);
|
|
print_r($a);
|
|
// définition d'un deuxième table à problème
|
|
echo "----\nvector b - a alerte (b = log(PI) * a)\n";
|
|
$b = scale_by_log($a, M_PI);
|
|
print_r($b);
|
|
// Ceci est un problème, on passe une chaîne à la place d'un tableau
|
|
echo "----\nvector c - une erreur\n";
|
|
$c = scale_by_log("not array",2.3);
|
|
var_dump($c);
|
|
// Ceci est critique : le tableau contient des valeurs négatives
|
|
echo "----\nvector d - fatal error\n";
|
|
$d = scale_by_log($a, -2.5);
|
|
?>
|
|
</programlisting>
|
|
</example>
|
|
L'éxécution du script devrait donner ceci :
|
|
<informalexample>
|
|
<programlisting>
|
|
vector a
|
|
Array
|
|
(
|
|
[0] => 2
|
|
[1] => 3
|
|
[2] => foo
|
|
[3] => 5.5
|
|
[4] => 43.3
|
|
[5] => 21.11
|
|
)
|
|
----
|
|
vector b - une alerte (b = log(PI) * a)
|
|
<B>WARNING</B> [1024] La valeur à la position 2 n'est pas un nombre. On utilise 0 (zéro) à la place<br>
|
|
Array
|
|
(
|
|
[0] => 2.2894597716988
|
|
[1] => 3.4341896575482
|
|
[2] => 0
|
|
[3] => 6.2960143721717
|
|
[4] => 49.566804057279
|
|
[5] => 24.165247890281
|
|
)
|
|
----
|
|
vector c - an error
|
|
<B>ERROR</B> [512] Vecteur d'entrée incorrect : un tableau de valeur est attendu<br>
|
|
NULL
|
|
----
|
|
vector d - fatal error
|
|
<B>FATAL</B> [256] log(x) de x <= 0 est indéfini : scale = -2.5<br>
|
|
Erreur fatale à la ligne 16 du fichier trigger_error.php, PHP 4.0.1pl2 (Linux)<br>
|
|
Annulation du script....<br>
|
|
</programlisting>
|
|
</informalexample>
|
|
</para>
|
|
<para>
|
|
Il faut se rappeler que la fonction standard de traitement des erreurs
|
|
de PHP est alors complètement ignorée.
|
|
<function>error_reporting</function>
|
|
n'aura plus d'effet, et votre fonction de gestion des
|
|
erreurs sera toujours appelée. Vous pourrez toujours lire la valeur
|
|
de l'erreur courante de <function>error_reporting</function> et
|
|
faire réagir la fonction de gestion des erreurs en fonction.
|
|
Cette remarque est notamment valable si la commande a été
|
|
préfixée par <link linkend="language.operators.errorcontrol">@</link>
|
|
(0 sera retourné).
|
|
</para>
|
|
<para>
|
|
Notez aussi qu'il est alors confié à cette fonction de
|
|
terminer le script (<function>die</function>) si nécessaire. Si la
|
|
fonction de gestion des erreurs se termine normalement, l'exécution
|
|
du script se poursuivra avec l'exécution de la prochaine commande.
|
|
</para>
|
|
<para>
|
|
Voir aussi
|
|
<function>error_reporting</function>,
|
|
<function>restore_error_handler</function>,
|
|
<function>trigger_error</function> et
|
|
<function>user_error</function>
|
|
</para>
|
|
</refsect1>
|
|
</refentry>
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"../../../../manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|