Maison >développement back-end >Problème PHP >Comment gérer les erreurs et les exceptions en php
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.
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 }
try{ // 可能出现异常或错误的代码,比如文件操作、数据库操作等 }catch(Exception $e){ // $e 为一个异常类的对象 // 输出错误信息 }
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 = '抛出异常信息,并跳出 try 语句块'; if(is_dir('./test')){ echo '这里是一些可能会发生异常的代码'; }else{ throw new Exception($err, 12345); // 抛出异常 } echo '上面抛出异常的话,这行代码将不会执行,转而执行 catch 中的代码。<br>'; }catch(Exception $e){ echo '捕获异常:'.$e->getMessage().'<br>错误代码:'.$e->getCode().'<br>'; } echo '继续执行 try catch 语句之外的代码'; ?>
Les résultats d'exécution sont les suivants :
捕获异常:抛出异常信息,并跳出 try 语句块 错误代码:12345 继续执行 try catch 语句之外的代码
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!