Accueil » Articles » Développez des sites web dynamiques avec PhP et MySQL [Tuto en cours]

Développez des sites web dynamiques avec PhP et MySQL [Tuto en cours]

LA GESTION DES ERREURS ET DES EXCEPTIONS EN PHP

La gestion des erreurs est essentielle en PhP. Si votre code ne prend pas en charge les erreurs qui peuvent potentiellement subvenir, tout votre site peut encourir des problèmes de sécurité et cela peut également impacter l’ergonomie de votre site, et donc l’expérience utilisateur.

Dans ce chapitre, nous allons également nous pencher sur la gestion des exceptions qui sont liées aux erreurs. Mais commençons déjà par les erreurs ; une chose à la fois !

Pour gérer les erreurs en PhP, plusieurs options s’offrent à nous : on peut soit créer un script autour de la fonction die(), soit créer une fonction personnalisée.

La fonction die()

La fonction die() va nous permettre d’arrêter l’exécution du script et de renvoyer un message d’erreur personnalisé à l’utilisateur. Cette fonction prend en paramètre le message d’erreur à renvoyer.

Voyons immédiatement un exemple de gestion d’erreur avec la fonction die().

Imaginons que nous voulions ouvrir un fichier avec le mode « r » mais que ce fichier n’existe pas ou soit inaccessible. Nous allons alors utiliser die() pour gérer ce cas d’erreur.

Pour cet exemple, nous allons également avoir besoin de la fonction PhP file_exists() qui vérifie si un fichier ou un dossier existe et renvoie un booléen en sortie (true s’il existe, false sinon).

Voilà ce que donne notre script :

La fonction die() en PhP

Dans ce script, donc, on commence par vérifier si le fichier recherché existe (et est accessible) ou pas.

Si ce n’est pas le cas, on exécute la fonction die() qui arrête le script et renvoie le message d’erreur « fichier non trouvé ».

Dans le cas contraire, le script continue et le fichier est ouvert. L’information est alors stockée dans la variable $fichier.

Création d’une fonction sur mesure

Parfois, arrêter l’exécution du script n’est pas la meilleure solution. On peut alors créer une fonction de gestion des erreurs sur mesure avec les éléments déjà à notre disposition en PhP.

Cette fonction devra accepter au minimum deux paramètres pour fonctionner : le niveau de l’erreur (la valeur doit être un nombre) et le message d’erreur renvoyé.

Le niveau d’erreur correspond au type de l’erreur rencontrée par l’utilisateur.

On peut également lui rajouter d’autres paramètres au besoin comme le fichier dans lequel l’erreur est apparue, la ligne à laquelle l’erreur est apparue ou encore le contexte de l’erreur.

Le « contexte » correspond à un tableau avec chaque variable impliquée dans l’erreur et sa valeur.

Nous n’allons pas aller plus loin ni créer cette fonction car cela serait peut être un peu compliqué et difficile à comprendre à votre niveau. Sachez juste que c’est possible, et n’hésitez pas à tenter de le faire une fois tout le cours assimilé !

Les exceptions en PhP

On utilise les exceptions pour modifier la façon dont va être exécuté un script si une condition d’erreur exceptionnelle survient au milieu de ce script.

A vrai dire, la gestion des exceptions est une partie un peu technique en PhP et il est possible que vous ne compreniez pas tout pour le moment. En effet, on use depuis PhP5 de méthodes orientées objet pour gérer ces exceptions.

Cependant, nous allons avoir besoin de gérer des exceptions dans la partie suivante concernant les bases de données et je dois donc vous en parler.

Je vais essayer d’aller à l’essentiel tout en gardant un discours simple.

Tout d’abord, vous devez savoir que lorsque PhP rencontre une exception, il va arrêter l’exécution du script, c’est à dire que le bout de code suivant l’exception ne sera pas exécuté.

Il y a trois termes que vous devez connaître avec les exceptions : try (tester), throw (lancer) et catch (attraper) :

  • Try : une fonction utilisant une exception doit être dans un bloc « try ». Si l’exception n’est pas déclenchée, la fonction s’exécutera normalement. Dans le cas contraire, une exception sera lancée,
  • Throw : on dit qu’on lance une exception. C’est de cette façon qu’on va potentiellement la déclencher,
  • Catch : Si une exception est déclenchée, il va falloir qu’on la récupère, qu’on l’attrape. On va faire ça dans un bloc « catch » et créer un objet contenant des informations relatives à l’exception.

Voici en pratique comment ça fonctionne (j’espère que vous êtes prêts pour un peu de nouveauté !).

Gestion des exceptions PhP

Dans ce premier exemple, comme la valeur entrée est bien inférieure à 10 (regardez bien le bloc try), aucune exception n’est déclenchée et le script s’exécute normalement.

Gestion des exceptions PhP test 1

Dans l’exemple ci-dessous, en revanche, la valeur entrée est supérieure à 10. Une exception va donc être lancée et le message d’erreur correspondant affiché.

Gestion des exceptions PhP test 2

Gestion des exceptions PhP

Décortiquons ce bout de code ensemble. Encore une fois, c’est tout à fait normal que vous ne compreniez pas tout sachant que l’utilise ici de la programmation orientée objet que nous venons juste d’étudier.

Tout d’abord, je commence par créer une fonction Chiffre qui n’accepte que des nombres inférieurs strictement à 10. Dans le cas où une valeur égale ou supérieure à 10 est passée à ma fonction, on lance une exception.

Pour cela, on instancie la classe Exception pour avoir accès à ses méthodes et à ses propriétés, la classe Exception étant une classe native dans PhP (donc déjà pré-codée et prête à l’emploi).

Nous avons ainsi accès à des méthodes comme getMessage() par exemple qui vont nous être très utile.

Ensuite, j’appelle ma fonction dans un bloc « try ». Si la valeur passée à ma fonction est bonne, le script continue à s’exécuter normalement. Dans le cas contraire, l’exception va être déclenchée via le bloc throw.

Si l’exception est déclenchée, on va alors la capturer dans un bloc catch et créer une variable objet $e qui va contenir les informations relatives à l’exception.

Enfin, on affiche les informations relatives à l’exception grâce à un echo et à la methode GetMessage() qui va aller chercher le texte « la valeur doit être inférieure à 10 ».

Il est fort probable qu’à ce stade vous ayez un peu décroché. Encore une fois, pas d’inquiétude : c’est normal. Il y a beaucoup de choses nouvelles ici. Pour le moment, contentez vous d’accepter toutes ces informations.

Je voulais juste vous montrer comment on prenait en charge les exceptions car nous allons en avoir besoin dans la partie base de données. N’hésitez pas à revenir sur ce chapitre par la suite !

16 commentaires

  1. abdelmalek derouich

    merci infiniment pour ces cours, j’été vraiment nul et maintenant je commence à n’avancer dans la création des sites WEB en utilisant le HTML, le CSS et le PHP et c’est grâce à vos cours minutieusement expliqués.

  2. bonjours ,je suis encore un petit peux débutant dans le codage , j’aimerais faire une page d’inscription et une de connexion en php et mysql je dispose d’une base de donnée . merci d’avance pour votre aide .
    ps : j’adore vos vidéo =)

  3. Bocomba William Edouard

    bonjour,

    je suis William un de vos disciple Abidjan. En lisant le code source du site pierre-girraud.fr j’ai constater un bon nombre de balise link et de balise meta. Et je me pose la question de savoir a quoi elle servent? Par ailleurs je suis impatient de savourer la suite du cour sur php et mysql. Merci d’avance et surtout merci pour tout.

    Amicalement

    William

  4. Bonjour,

    Je te remercie de tout mon cœur Pierre!
    Tu consacre ton temps à partager des choses meilleures.
    Je suis débutant mais je croix de devenir pro, tes tutos sont claires et faciles à comprendre.
    Merci infiniement

  5. Salut, c’est vraiment génial ce que tu fais mais j’ai encore un problème, je n’arrive pas a créer un formulaire pour envoyer un mail ou pouvoir communiquez avec moi (pas un bloc mais vraiment une page de contact).
    Merci de bien vouloir m’aider…

    • Bonjour,

      J’explique déjà tout cela dans mes cours HTML / CSS et PhP… Je ne peux donc que vous conseillez de revoir les parties consacrées à cela (lien pour envoyer un fichier / un mail et partie formulaire HTML et PhP).

      Bonne continuation,
      Pierre

  6. Vous etes genial, j’ai vu vos cours sur youtube et votre adresses qui ma poussé avenir sur votre site. Mr pierre je suis un petit zero de la programmation mais suis pas mal j’aimerai vous assistez dans vos taches pour me former…! merci pour les cours suis content

  7. je voudrais que tu m’explique un peut comment fonctionne les fonction static en phph

  8. bonjour
    merci pour ce cours mais je ne vois pas la partie base de données et pourtant l’intitulé c’est cours complet!!!!

  9. Salut Pierre Giraud,

    Je viens de regarder le tuto sur HTML et CSS, c’est magnifique !!!
    Maintenant j’aimerais creer des sites dynamiques avec PHP MySQL.
    Pourriez vous m’aider s’il vous plait. Merci de votre aide en envoyant des tuto tres tres interessant.

Répondre

Votre adresse email ne sera pas publiée. Les champs obligatoires sont marqués d'une étoile *

*