Introduction Cela fait partie de ma série 1, la gestion des exceptions en PHP. Dans cette partie de la série, nous abordons les bases d'exceptions en PHP. Vous avez besoin des connaissances de base en PHP et PHP Programmation Orientée Objet pour comprendre cette série. Si vous ne disposez pas de connaissances dans l'un de ces champs puis à partir de ce blog, lisez la série dont la première partie est intitulée «Premiers pas avec PHP" et un autre dont la première partie est intitulée «Notions de base de la POO en PHP".
Pour rejoindre la série, il suffit de taper le titre et mon nom Chrys dans le champ de recherche de cette page puis cliquez sur Rechercher. Remarque: Si vous ne pouvez pas voir le code ou si vous pensez que quelque chose manquait (lien brisé, l'image absente), contactez-moi au [email protected]. Qui est, me contacter pour le moindre problème que vous avez à propos de ce que vous lisez.
Erreur d'exécution Exemple Considérons le code suivant: $ numérateur = 8; $ dénominateur = 2; if ($ dénominateur = 0!) {$ answer = $ numérateur /dénominateur $; echo $ réponse; } Else {echo "La division par zéro interdit!"; }?> Ce code se divise essentiellement deux numéros. Dans la vie, vous ne pouvez pas diviser un nombre par zéro. En supposant que le dénominateur est entrée par l'utilisateur, il peut entrer zéro. La division (processus) par zéro ne devrait pas être autorisé. Penchons-nous sur ce qui est dans le code: les deux premières déclarations sont initialisation d'entiers.
La division devrait avoir lieu dans le cas du bloc. Les contrôles condition If si le dénominateur est zéro. Si il est pas, la division a lieu dans le cas du bloc. Si elle est, l'autre partie de la si-construction affiche un message d'erreur à l'utilisateur. Ce segment de code est OK, parce que si le dénominateur est zéro, si le bloc ne sera pas exécuté et pas de division aura lieu. Avec le code ci-dessus, l'exécution du programme se poursuit après l'if /else construction. Cette if /else construction fait la division et empêche erreur d'exécution d'avoir lieu.
Le cas du bloc fait la division; Vérifie si les condition si l'erreur serait de se produire; si l'erreur se produirait, l'autre bloc affiche un message d'alerte et le cas du bloc et la division ne sont pas exécutées. Composants de base de Exception En termes simples, une exception est une erreur. Avec la gestion des exceptions, vous avez ce qu'on appelle la construction try /catch; constitué des blocs try et catch. Le bloc try a une expression importante, qui est, jeter. jet prend un nouvel objet appelé l'objet d'exception.
L'objet de l'exception est un objet prédéfini qui vous permet de traiter les exceptions. Dans ce qui précède if /else construire, le segment de code d'intérêt, qui est le segment requise, est le cas du bloc. Ce bloc-si est ce qui fait la division. Avec la gestion des exceptions, ce segment de code d'intérêt va dans le bloc try; le segment de code du gestionnaire message d'erreur segment de code ou d'erreur va dans le fourre-bloc. L'expression d'un jet dans le bloc try appelle la catch-bloc passant un nouvel objet exception. La construction de capture est comme une fonction.
Ceci est la syntaxe de base pour la gestion des exceptions, try {//déclarations d'intérêt throw new Exception (errorMessage, le code); } Catch (Exception $ e) {//gérer l'erreur} L'argument pour l'expression de projection ne va pas en parenthèses. Il est une nouvelle exception objet instancié qui n'a pas besoin d'avoir un nom. Vous pouvez tordre votre code autour de lui donner un nom, mais il est bien comme il est ci-dessus. Les paramètres de la nouvelle objet d'exception sont tous deux en option.
Le premier est le message d'erreur de votre choix que vous voulez donner à l'utilisateur du programme. Le second est un nombre entier de votre choix qui représente l'erreur. La catch-bloc doit suivre immédiatement le bloc try dans votre frappe, comme dans la syntaxe ci-dessus. Il reçoit le nouvel objet d'exception instancié jetés. Le paramètre pour le bloc catch est, "Exception $ e". Ici, le mot, Exception, signifie le type d'objet reçu, est un objet d'exception. $ e est la variable qui identifie le nouvel objet d'exception instancié (reçu dans le fourre-bloc).
Le précédent programme est ré-écrit en utilisant la try /catch construire comme suit: $ numérateur = 8; $ dénominateur = 2; try {if ($ dénominateur = 0!) {$ answer = $ numérateur /dénominateur $; echo $ réponse; } Else {throw new Exception ("division par zéro est pas permis!"); }} Catch (Exception $ e) {echo $ e-> getMessage (); }?> Lire et essayer le programme ci-dessus. Modifiez la valeur de $ dénominateur à zéro et essayez à nouveau le programme. Rappelez-vous, pour l'opérande de projection ci-dessus, les deux arguments de la fonction constructeur de la classe Exception sont facultatifs.
Dans ce code, seul le message d'erreur de choix du programmeur a été donné. Si le programmeur ne donne pas cet argument, le message d'erreur par défaut de "Exception inconnue", seraient détenues par le nouvel objet d'exception instancié. La catch-bloc attrape l'objet d'exception levée comme paramètre (argument), $ e. La classe Exception a une méthode qui permettrait de lire le message d'erreur que vous avez saisi lors de l'instanciation du nouvel objet exception. Le nom de la méthode est, getMessage. La catch-bloc au-dessus tout simplement fait écho le message.
Lisez le code ci-dessus à nouveau. Dans de nombreux cas, l'essai-bloc a une condition équivalente si dont le bloc va exécuter si la condition ne détecte pas l'erreur. Si la condition détecte l'erreur, le cas du bloc ne sera pas exécuté, et la partie else jettera l'exception; qui est, de la part de d'autre va appeler la catch-bloc envoyer l'argument (d'objet exception instancié) de l'expression de lancer, à elle. Le bloc catch utilise l'argument pour afficher un message d'erreur approprié (tapé lors de l'instanciation) à l'utilisateur. Ceci est ce qui se produit dans de nombreux cas.
Les erreurs sont généralement pas traités dans le vrai sens du mot; généralement un message d'erreur est envoyé à l'utilisateur, un si-construire dans le bloc try empêche l'erreur ne se produise effectivement. Après cette exécution, le programme se poursuit dans l'ordre de la construction try /catch; et il n'y a pas de fin de programme, même si une erreur a été détectée.
Jetez Expression dans une fonction, vous pouvez mettre ce que vous avez besoin pour le bloc try dans une fonction comme illustré ci-dessous: $ numérateur = 8; $ dénominateur = 2; fonctionner errFn () {if {$ answer = $ numérateur /dénominateur $ ($ dénominateur = 0!); echo $ réponse; } Else {throw new Exception ("division par zéro est pas permis!"); }} Try {errFn (); } Catch (Exception $ e) {echo $ e-> getMessage (); }?>