Maison > développement back-end > Problème PHP > Comment gérer les erreurs et les exceptions en php

Comment gérer les erreurs et les exceptions en php

青灯夜游
Libérer: 2023-03-12 11:18:01
original
3739 Les gens l'ont consulté

En PHP, vous pouvez utiliser diverses fonctions membres intégrées dans la classe de gestion des exceptions « Exception » pour obtenir et renvoyer des données d'exception. Par exemple, la fonction getMessage() peut renvoyer le contenu du message d'exception ; try catch" et le mot-clé "throw" pour intercepter les exceptions dans le programme.

Comment gérer les erreurs et les exceptions en php

L'environnement d'exploitation de ce tutoriel : système Windows 7, PHP version 7.1, ordinateur DELL G3

Classe de gestion des exceptions en PHP

PHP fournit une classe de gestion des exceptions intégrée - Exception, dans cette classe Les fonctions membres couramment utilisées sont les suivantes :

  • getMessage() : renvoie le contenu du message de l'exception ;

  • getCode() : renvoie le code de l'exception sous forme numérique ; fichier où l'exception s'est produite Nom ;

  • getLine() : renvoie le numéro de la ligne de code où l'erreur s'est produite ;

  • getTrace() : renvoie le tableau backtrace() ; fonction qui a été formatée en chaîne. Informations générées par la fonction getTrace() ;

  • __toString() : génère des informations de chaîne d'exception, qui peuvent être surchargées. Notez que la fonction est précédée de deux traits de soulignement.

  • Le code suivant est le code complet de la classe Exception. À partir de la définition de cette classe, nous pouvons voir quelles propriétés et méthodes (fonctions membres) sont accessibles et héritées dans les sous-classes dérivées de l'utilisateur.

    Exception {
        /* 属性 */
        protected string $message ;
        protected int $code ;
        protected string $file ;
        protected int $line ;
        /* 方法 */
        public __construct ([ string $message = "" [, int $code = 0 [, Throwable $previous = NULL ]]] )
        final public getMessage ( void ) : string
        final public getPrevious ( void ) : Throwable
        final public getCode ( void ) : int
        final public getFile ( void ) : string
        final public getLine ( void ) : int
        final public getTrace ( void ) : array
        final public getTraceAsString ( void ) : string
        public __toString ( void ) : string
        final private __clone ( void ) : void
    }
    Copier après la connexion
  • Attrapez les exceptions dans le programme

  • En PHP, si vous souhaitez intercepter les exceptions dans le programme, vous devez utiliser l'instruction try catch et le mot-clé throw pour y parvenir. L'instruction try catch est similaire à l'instruction de contrôle de flux, vous pouvez donc utiliser l'instruction try catch pour implémenter une structure de sélection conditionnelle alternative, et le mot clé throw peut lever une exception. Le format syntaxique de l'instruction try catch est le suivant :
try{
    // 可能出现异常或错误的代码,比如文件操作、数据库操作等
}catch(Exception $e){    // $e 为一个异常类的对象
    // 输出错误信息
}
Copier après la connexion

Le code qui nécessite la gestion des exceptions doit être placé dans le bloc de code try afin d'intercepter d'éventuelles exceptions. Chaque essai doit avoir au moins une capture correspondante. Utilisez plusieurs captures pour intercepter les exceptions générées par différentes classes.

Lorsque le bloc de code try ne génère plus d'exception ou qu'aucun catch ne peut être trouvé pour correspondre à l'exception lancée, le code PHP poursuivra son exécution après être passé au dernier catch. Les exceptions générées dans le code PHP peuvent être levées par des instructions throw et interceptées par des instructions catch. Bien entendu, PHP permet de relancer des exceptions dans les blocs catch.

Lorsqu'une exception est levée, le code suivant ne continuera pas à s'exécuter et PHP tentera de continuer à trouver le premier catch correspondant. Si une exception n'est pas interceptée et n'est pas gérée en conséquence à l'aide de set_exception_handler(), une erreur grave se produira et le message UncaughtException... sera généré.

【Exemple】Utilisez try catch et throw pour intercepter les exceptions dans le programme.

<?php
    try{
        $err = &#39;抛出异常信息,并跳出 try 语句块&#39;;
        if(is_dir(&#39;./test&#39;)){
            echo &#39;这里是一些可能会发生异常的代码&#39;;
        }else{
            throw new Exception($err, 12345);   // 抛出异常
        }
        echo &#39;上面抛出异常的话,这行代码将不会执行,转而执行 catch 中的代码。<br>&#39;;
    }catch(Exception $e){
        echo &#39;捕获异常:&#39;.$e->getMessage().&#39;<br>错误代码:&#39;.$e->getCode().&#39;<br>&#39;;
    }
    echo &#39;继续执行 try catch 语句之外的代码&#39;;
?>
Copier après la connexion

Les résultats d'exécution sont les suivants :

捕获异常:抛出异常信息,并跳出 try 语句块
错误代码:12345
继续执行 try catch 语句之外的代码
Copier après la connexion

Dans l'exemple de code, dans le bloc d'instruction try, essayez de déterminer s'il existe un répertoire nommé test dans le répertoire courant. Si ce répertoire n'existe pas, alors le code est activé. la ligne 7 sera exécutée. Le mot-clé throw lève une exception. Cette exception est un objet de la classe Exception, généré via le mot-clé new, et l'objet est initialisé avec le message d'erreur $err et le code d'erreur 12345, afin que ces informations puissent être obtenues lorsque l'exception est interceptée ultérieurement (ligne 11 du code).

Une fois qu'une exception est levée, le code restant dans le bloc d'instruction try ne continuera plus à s'exécuter. Le flux du programme sera transféré vers le bloc d'instruction catch correspondant pour exécution, et enfin les informations d'erreur et le code seront affichés en appelant. sa fonction membre via l’objet Exception.

Apprentissage recommandé : "

Tutoriel vidéo PHP

"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal