Exemple de test PHP Try Catch: Exception & Tutoriel de gestion des erreurs

Table des matières:

Anonim

Qu'est-ce qu'une exception?

Une erreur est un résultat de programme inattendu qui ne peut pas être géré par le programme lui-même.

Les erreurs sont résolues en corrigeant le programme. Un exemple d'erreur serait une boucle infinie qui ne s'arrête jamais de s'exécuter.

Une exception est un résultat de programme inattendu qui peut être géré par le programme lui-même.

Les exemples d'exception incluent la tentative d'ouverture d'un fichier qui n'existe pas.

Cette exception peut être gérée en créant le fichier ou en présentant à l'utilisateur une option de recherche du fichier.

Dans ce didacticiel, vous apprendrez-

  • Pourquoi gérer l'exception?
  • Gestion des erreurs PHP
  • Exemples de gestion des erreurs
  • Différence entre erreurs et exception
  • Exceptions multiples
  • Tester le code

Pourquoi gérer l'exception?

  • Évitez les résultats inattendus sur nos pages qui peuvent être très ennuyeux ou irritants pour nos utilisateurs finaux
  • Améliorer la sécurité de nos applications en n'exposant pas les informations que les utilisateurs malveillants pourraient utiliser pour attaquer nos applications
  • Les exceptions Php sont utilisées pour modifier le déroulement normal d'un programme si une erreur prévisible se produit.

Gestion des erreurs PHP

Lorsqu'une erreur se produit, en fonction de vos paramètres de configuration, PHP affiche le message d'erreur dans le navigateur Web avec des informations relatives à l'erreur qui s'est produite.

PHP offre un certain nombre de façons de gérer les erreurs.

Nous allons examiner trois (3) méthodes couramment utilisées;

  1. Instructions Die - la fonction die combine les fonctions d'écho et de sortie en une seule. C'est très utile lorsque nous voulons sortir un message et arrêter l'exécution du script lorsqu'une erreur se produit.
  2. Gestionnaires d'erreurs personnalisés - ce sont des fonctions définies par l'utilisateur qui sont appelées chaque fois qu'une erreur se produit.
  3. Rapport d'erreur PHP - le message d'erreur en fonction de vos paramètres de rapport d'erreur PHP. Cette méthode est très utile dans un environnement de développement lorsque vous n'avez aucune idée de la cause de l'erreur. Les informations affichées peuvent vous aider à déboguer votre application.

Exemples de gestion des erreurs

Regardons maintenant quelques exemples simples avec des routines de gestion des erreurs.

Supposons que nous ayons développé une application qui utilise des fichiers texte pour stocker des données. Nous pourrions vouloir vérifier l'existence du fichier avant d'essayer de lire des données à partir de celui-ci.

Le code ci-dessous implémente l'exemple ci-dessus.

En supposant que vous ayez enregistré le fichier simple_error.php dans le dossier phptuts, ouvrez l'URL http: //localhost/phptuts/simple_error.php

Vous obtiendrez les résultats suivants

Comme vous pouvez le voir à partir des résultats ci-dessus, cela donne à notre application un aspect non professionnel et peut être ennuyeux pour l'utilisateur.

Nous allons modifier le code ci-dessus et écrire un gestionnaire d'erreurs pour l'application

En supposant que vous ayez enregistré le code ci-dessus sous le nom error_handling.php, ouvrez l'URL http: //localhost/phptuts/error_handling.php

Remarque: c'est une bonne pratique de sécurité d'afficher un message comme celui illustré ci-dessus au lieu d'afficher le message comme «Fichier non trouvé».

Regardons un autre exemple qui utilise un gestionnaire d'erreurs personnalisé.

Le gestionnaire d'erreurs personnalisé sera défini comme la fonction de gestion des erreurs PHP par défaut et affichera essentiellement un numéro et un message d'erreur.

Le code ci-dessous illustre la mise en œuvre de l'exemple ci-dessus

Ouvrez l'URL http: //localhost/phptuts/custom_error_handler.php vous obtiendrez les résultats suivants

.

Comme vous pouvez le voir dans l'exemple ci-dessus, les gestionnaires d'erreurs personnalisés sont puissants dans le sens où

  • Ils nous permettent de personnaliser les messages d'erreur.
  • Le gestionnaire d'erreurs personnalisé peut également inclure la journalisation des erreurs dans un fichier / base de données, l'envoi d'un e-mail au développeur, etc.

Regardons maintenant le troisième type de gestion des erreurs. Nous utiliserons la fonction PHP intégrée à la fonction error_reporting. Il a la syntaxe de base suivante

ICI,

  • "Error_reporting" est la fonction de rapport d'erreur PHP
  • "$ Reporting_level" est facultatif, peut être utilisé pour définir le niveau de rapport. Si aucun niveau de rapport n'a été spécifié, PHP utilisera le niveau de rapport d'erreur par défaut tel que spécifié dans le fichier php.ini.
Niveau de reporting Description Exemple
E_WARNING Affiche uniquement les messages d'avertissement. N'interrompt pas l'exécution du script rapport_erreur (E_WARNING);
E_NOTICE Affiche les avis pouvant survenir lors de l'exécution normale d'un programme ou pouvant être une erreur. rapport_erreur (E_ NOTICE);
E_USER_ERROR Affiche les erreurs générées par l'utilisateur, c'est-à-dire le gestionnaire d'erreurs personnalisé error_reporting (E_ USER_ERROR);
E_USER_WARNING Affiche les messages d'avertissement générés par l'utilisateur rapport_erreur (E_USER_WARNING);
E_USER_NOTICE Affiche les avis générés par l'utilisateur rapport_erreur (E_USER_NOTICE);
E_RECOVERABLE_ERROR Affiche les erreurs qui ne sont pas fatales et peuvent être gérées à l'aide de gestionnaires d'erreurs personnalisés rapport_erreur (E_RECOVERABLE_ERROR);
E_ALL Affiche toutes les erreurs et avertissements rapport_erreur (E_ ALL);

Différence entre erreurs et exception

  • Les exceptions sont levées et destinées à être interceptées tandis que les erreurs sont généralement irrécupérables.
  • Les exceptions sont gérées de manière orientée objet.

    Cela signifie lorsqu'une exception est levée; un objet d'exception contenant les détails de l'exception est créé.

Le tableau ci-dessous montre les méthodes d'objet d'exception

Méthode Description Exemple
getMessage () Affiche le message de l'exception
getMessage();?>
obtenir le code() Affiche le code numérique qui représente l'exception
getCode();?>
getFile () Affiche le nom du fichier et le chemin où l'exception s'est produite
getFile();?>
getLine () Affiche le numéro de ligne où l'exception s'est produite
getLine();?>
getTrace () Affiche un tableau de la trace arrière avant l'exception
getTrace());?>
getPrevious () Affiche l'exception précédente avant celle en cours
getPrevious();?>
getTraceAsString () Affiche la trace de l'exception sous forme de chaîne au lieu d'un tableau
getTraceAsString();?>
__toString () Affiche l'exception entière sous forme de chaîne
__toString();?>

Vous trouverez ci-dessous la syntaxe de base pour lever une exception.

ICI,

  • «Throw» est le mot-clé utilisé pour lever l'exception
  • «New Exception (…)» crée un objet d'exception et transmet la chaîne «Ceci est un exemple d'exception» comme paramètre de message.

Le code ci-dessus génère le message suivant.

Nous allons maintenant regarder un exemple qui implémente les exceptions throw et catch.

Nous allons modifier l'exemple ci-dessus et inclure le try, throw et catch.

Il a la syntaxe de base suivante.

ICI,

  • "Try {…}" est le bloc de code à exécuter qui pourrait potentiellement déclencher une exception
  • «Catch (Exception $ e) {…}» est le bloc de code qui intercepte l'exception levée et affecte l'objet d'exception à la variable $ e.

Le code ci-dessous montre l'exemple d'exception de base avec l'exception try, throw et catch implémentée.

Le programme lève délibérément une exception qu'il intercepte ensuite.

getMessage();echo "";echo "getCode(): " . $e->getCode();echo "";echo "__toString(): " . $e->__toString();}?>

Ouvrez l'URL http: //localhost/phptuts/exception_handling.php Vous obtiendrez les résultats suivants.

Il est également possible de créer plusieurs exceptions pour une instruction php try en fonction du type d'exception levée.

Voir l'article sur MySQL, accès aux données PHP

… Pour des exemples de mise en œuvre d'exceptions multiples

Exceptions multiples

Les exceptions multiples utilisent plusieurs blocs try catch pour gérer les exceptions levées. Plusieurs exceptions sont utiles lorsque;

  • Vous souhaitez afficher un message personnalisé en fonction de l'exception levée
  • Vous souhaitez effectuer une opération unique en fonction de l'exception levée

L'organigramme ci-dessous illustre le fonctionnement de plusieurs exceptions

Regardons un exemple qui utilise plusieurs exceptions.

Nous modifierons le code qui divise un nombre par le dénominateur passé.

Nous nous attendons à ce que deux types d'exceptions se produisent;

  • Division par zéro
  • Division par un nombre négatif

Par souci de simplicité, nous n'afficherons que le type d'exception dans nos blocs catch.

La classe PHP intégrée aux exceptions est utilisée pour lancer des exceptions.

Nous allons créer deux classes qui étendent la classe d'exception et les utiliser pour lancer des exceptions.

Le code ci-dessous montre l'implémentation.

Tester le code

Nous supposerons que vous avez enregistré plusieurs_exceptions.php dans le dossier phptuts.

Accédez à l'URL http: //localhost/phptuts/multiple_exceptions.php

Revenez au fichier PHP et passez -1 comme paramètre comme indiqué dans le diagramme suivant.

Accédez à l'URL http: //localhost/phptuts/multiple_exceptions.php .

Quels résultats obtenez-vous? Passez 3 comme paramètre.

Quels résultats obtenez-vous?

Résumé

  • Les erreurs sont des résultats inattendus produits par le code PHP
  • La gestion des erreurs améliore les performances de l'application
  • PHP a intégré des fonctions qui peuvent être utilisées pour personnaliser la façon dont PHP signale les erreurs
  • Les exceptions sont comme des erreurs, mais elles peuvent être interceptées à l'aide du bloc catch lorsqu'elles sont lancées.
  • L'affichage de messages d'erreur contenant des informations d'erreur est considéré comme une mauvaise pratique de sécurité.