Maison  >  Article  >  développement back-end  >  Comment concevoir des classes d'exception dans les projets PHP

Comment concevoir des classes d'exception dans les projets PHP

王林
王林original
2019-09-29 11:54:582135parcourir

Comment concevoir des classes d'exception dans les projets PHP

Classes d'exceptions PHP et opérations de gestion des exceptions

La gestion des exceptions est classée comme gestion des erreurs. PHP a ajouté la classe de gestion des exceptions Exception à partir de la version 5.1.0.

1. Gestion des exceptions

La gestion des exceptions PHP est similaire à Java, utilisant les instructions try, throw et catch pour coder lorsqu'une exception se produit. Si l'exception n'est pas interceptée et que la fonction set_exception_handler() est utilisée pour le traitement correspondant, une erreur grave (erreur fatale) se produira et un message d'erreur "Uncaught Exception" sera généré.

1. essayez :

est utilisé pour les blocs de code où des exceptions peuvent survenir.

2. throw :

spécifie comment déclencher des exceptions, utilisé pour lancer des exceptions. Chaque lancer doit correspondre à au moins une prise.

3. catch :

Interceptez les exceptions et créez des objets contenant des informations sur les exceptions.

Remarque : supposons que des exceptions php doivent être levées pour les intercepter.

Structure de base :

try{
#some codes
throw new Exception("message"[,code[,...]]);
}
catch(Exception $ex){
#some codes
}

2. Classe de base d'exception PHP Exception

Résumé de la classe :

Exception {
/* 属性 */
protected string $message ;
protected int $code ;
protected string $file ;
protected int $line ;
/* 方法 */
public __construct ([ string $message = "" [, int $code = 0 [, Exception $previous = NULL ]]] )
final public string getMessage ( void )
final public Exception getPrevious ( void )  //获取异常链中前一个异常
final public int getCode ( void )
final public string getFile ( void )
final public int getLine ( void )
final public array getTrace ( void )   //获取异常追踪信息
final public string getTraceAsString ( void )  //字符串方式返回异常追踪信息
public string __toString ( void )
final private void __clone ( void )
}

Description :

Comme le montre cette classe de base, l'objet d'exception php contient principalement des informations textuelles anormales (message) et une exception code /Codename (code, doit être utilisé pour l'identification du développeur), le fichier dans lequel l'exception s'est produite (fichier, le fichier php où l'exception s'est produite) et l'emplacement spécifique où l'exception s'est produite (ligne, le numéro de ligne où l'exception s'est produite). jeté).

Exemple :

<?php
try {
 throw new Exception("Some error message", 30);//抛出异常,设置异常代号为30
} catch(Exception $e) {
 echo "Exception:file:".$e->getFile().",message:" . $e->getMessage().",code:".$e->getCode()."line:".$e->getLine();
}
?>

3. Classe d'exception personnalisée

Exemple :

class customException extends Exception
 {
 public function errorMessage()
 {
 //error message
 $errorMsg = &#39;Error on line &#39;.$this->getLine().&#39; in &#39;.$this->getFile()
 .&#39;: <b>&#39;.$this->getMessage().&#39;</b> is not a valid E-Mail address&#39;;
 return $errorMsg;
 }
 }

Lancer et attraper l'exception :

try{
throw new customException("这是自定义异常。");
}
catch(customException $ex){
#some codes
}

4. Exception de capture multi-catch

Lorsque différentes exceptions peuvent être levées dans une instruction try, il peut y avoir plusieurs blocs catch correspondants pour capturer différents types d'exceptions. Quelques points à noter de la même manière qu'en Java :

1. Mettez le gros catch d'exception plus tard. Parce que lorsqu'une exception est levée, quel catch est satisfait en premier est déterminé dans l'ordre, et un seul catch est exécuté à la fois.

2. Lorsque try est exécuté une fois, au plus une capture sera exécutée (lorsqu'une exception se produit). Autrement dit, si une capture précédente satisfait à l'exécution, les captures suivantes ne seront pas prises en compte.

Tutoriel 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!

Déclaration:
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