Cours ⇒ Cour PHP facebook twitter youtube

Les instructions de contrôle ⇒ & Gestion des erreurs



Gestion des erreurs

<?php
$a=10;
$b=0;
echo $a/$b;
fopen("inconnu.txt","r");
?>

les messages suivants apparaissent :
Warning: Division by zero in c:\wamp5\www\php5\c3instructions\instruct3.15a.php on line 4
Warning: fopen(inconnu.txt) [function.fopen]: failed to open stream: No such file or directory in c:\wamp5\www\php5\c3instructions\instruct3.15a.php on line 5

Le premier message correspond à la division par 0et le second à la tentative
d'ouverture d'un fichier qui n'existe pas

Pour éviter l'affichage des messages d'erreur de PHP dans le navigateur, il existe les
moyens élémentaires suivants :
• Faire précéder l'appel d'une fonction du caractère @ en écrivant par exemple
@fopen("inconnu.txt","r").
• Utiliser la fonction

error_reporting()

, qui permet de n'afficher que certains messages
selon le type d'erreur. Sa syntaxe est

int error_reporting ( [int niveau])

. C'est le
paramètre niveau qui permet de choisir le niveau d'affichage des messages d'erreur.
Ses principales valeurs sont indiquées au tableau 3-1. Vous pouvez combiner plusieurs
valeurs avec l'opérateur |

, comme dans le code suivant :
error_reporting(E_WARNING | E_PARSE) ;


qui permet de n'afficher que les alertes et les erreurs de syntaxe. Pour bloquer tous les
messages d'erreur, il faut passer à la fonction le paramètre 0. Cette fonction doit être
utilisée dès le début du script.
Tableau 3-1 – Liste des niveaux d'erreur courants Constante

Valeur

Niveau d'affichage

E_ERROR

1

Erreur fatale qui provoque l'arrêt du script, par exemple, l'appel d'une fonction qui
n'existe pas.

E_WARNING

2

Avertissement ne provoquant pas l'arrêt du script, par exemple, une division par 0.

E_PARSE

4

Erreur de syntaxe détectée par l'analyseur PHP et provoquant l'arrêt du script, par
exemple l'oubli du point-virgule en fin de ligne.

E_NOTICE

8

Avis que le script a rencontré un problème simple qui peut ne pas être une erreur

E_ALL

4095

Toutes les erreurs

hAUTE DE PAGE

Gestion des exceptions

Une exception est un mécanisme qui permet d'intercepter une erreur générée par un
script et de déclencher une action en réponse à cette erreur. Si PHP 4 ne permettait pas
d'effectuer une gestion des exceptions, la version 5 fournit un mécanisme qui permet de
gérer les conséquences d'une erreur.

Tableau 3-2 – Les méthodes de l'objet Exception

Méthode

Définition

_construct()

Constructeur de l'objet. Il est appelé automatiquement lors de la création d'un objet avec le
mot-clé new. Il définit les propriétés message et code de l'objet. Cette méthode ne doit pas
être appelée explicitement

getMessage()

Retourne la valeur de la propriété message dans une chaîne.

getCode()

Retourne la valeur de la propriété code sous la forme d'un entier.

getFile()

Retourne la valeur de la propriété file qui contient le nom et le chemin d'accès du fichier
dans lequel s'est produite l'erreur

getLine()

Retourne la valeur de la propriété line qui indique le numéro de ligne à laquelle a été créée
l'exception.

__toString()

Retourne une chaîne contenant toutes les informations sur l'exception.

☛ Exemple 3-16. Création d'un gestionnaire d'exception

<?php
$a=100;
$b=0;
try
{
if($b==0){throw new Exception("Division par 0",7);}
else{echo "Résultat de : $a / $b = ",$a/$b;}
}
catch(Exception $except)
{
echo "Message d'erreur :",$except–>getMessage(),"<hr>";
echo "Nom du fichier :",$except–>getFile(),"<hr>";
echo "Numéro de ligne :",$except–>getLine(),"<hr>";

echo "Code d'erreur :",$except–>getCode(),"<hr>";
echo "__toString :",$except–>__toString(),"<hr>";
}
echo "FIN";

?>

 

 

Cet exemple n'a pour but que d'illustrer l'utilisation des méthodes de l'objet Exception.
En production, vous n'afficheriez pas toutes ces informations, qui n'intéressent pas le
visiteur

Vous allez donc modifier ce script pour afficher une boîte d'alerte signalant simplement
le problème à l'utilisateur. L'exemple 3-17 montre les modifications opérées. Dans le
bloc catch, vous créez une boîte d'alerte utilisant la fonction JavaScript alert(), qui affiche
uniquement le message et le code d'erreur


Changer le fond
Oregionale Skin
7astuces
Sélectionnez un Fond (11)
7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces
Fond de contenu
7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces