Maison  >  Article  >  développement back-end  >  Explication détaillée de la gestion des erreurs et des exceptions en php

Explication détaillée de la gestion des erreurs et des exceptions en php

黄舟
黄舟original
2017-08-22 09:41:231642parcourir

Tout programmeur peut avoir rencontré des erreurs lors du développement, ou des erreurs causées par d'autres raisons. Bien entendu, si l'utilisateur ne veut pas ou ne respecte pas les contraintes de l'application, cela provoquera également des erreurs lors de son utilisation. L'article suivant vous présente principalement les erreurs courantes et la gestion des exceptions en PHP. Les amis qui en ont besoin peuvent s'y référer,

Avant-propos

Quand. nous développons un programme, il est très courant que le programme ait des problèmes. Comment devons-nous gérer les exceptions et les erreurs ? Cet article vous présentera en détail le contenu pertinent des erreurs PHP et de la gestion des exceptions, et le partagera pour votre référence et votre étude. Je ne dirai pas grand-chose ci-dessous, jetons un coup d'œil à l'introduction détaillée :

. 1, Gestion des erreurs PHP

1. Erreur de syntaxe

2. . Erreur logique : pas d'erreur d'invite, mais la fonction est erronée, la plus gênante

Trois niveaux : avis/avertissement/erreur fatale (impossible de continuer l'exécution)

5. Le rapport d'erreur affiche :


a. Vous pouvez modifier l'élément error_reporting dans php.ini pour limiter le type de rapport d'erreur, tel que :

b. modifier l'affichage des erreurs dans un script, vous pouvez utiliser error_reporting=E_ALL & ~E_NOTICE (recommandé)

6. Rapport d'erreur personnalisé : error_reporting(E_ALL & ~E_NOTICE); peut transmettre des paramètres prédéterminés pour afficher les erreurs, comme suit :

set_error_handler()

7. Enregistrez les journaux d'erreurs

a. Définissez display_errors dans PHP.ini sur Off et log_errors sur On
 set_error_handler('reportError');
 $mess="";
 function reportError($error_type,$error_message,$error_file,$error_line){
 global $mess;
 $mess.="发生错误级别为{$error_type}类型,错位信息<b>{$error_message}</b>,在文件{$error_file}中,第{$error_line}行。<br>";
 }
 getType($a);
 echo "1111111<br>";
 getType();
 echo "2222<br>";
 echo $mess;
 /*发生错误级别为8类型,错位信息Undefined variable: a,在文件F:\projects\Frame\FrameTest\BackEnd\regularExpression.php中,第24行。
 发生错误级别为2类型,错位信息gettype() expects exactly 1 parameter, 0 given,在文件F:\projects\Frame\FrameTest\BackEnd\regularExpression.php中,第26行。*/

b. . Personnalisez le répertoire des journaux


error_log="C:/XX/XX/php_error.log"

c. Vous pouvez également utiliser ou ini_get pour le définir dans le script

<.>

ini_set("display_errors","Off")2. Gestion des exceptions PHP

1.try catch est intégré, il ne peut y avoir de code au milieu2. .Exception est une classe prédéfinie par le système


3 Si un objet d'exception est lancé, donnez l'objet d'exception à la classe dans catch


4. la position d'exception dans try ne continuera plus à s'exécuter, mais elle est directement transférée au catch pour exécuter


5. La gestion des exceptions peut être utilisée avec l'erreur. gestion


 try{
 echo "开车上班<br>";
 throw new Exception("车子爆胎了!");
 }catch(Exception $e){//相当于Exception $e = new Exception(&#39;&#39;);
 echo $e->getMessage().&#39;<br>&#39;;
 echo &#39;换上备胎,继续上班<br>&#39;;
 }

6. Classe d'exception personnalisée


a. La classe Exception est la classe de base pour toutes les exceptions et ne définit pas de méthodes spécifiques de gestion des exceptions. (uniquement certaines méthodes pour obtenir des invites)

 set_error_handler(&#39;reportError&#39;);
 function reportError($error_type,$error_message,$error_file,$error_line){
 if($error_type==E_WARNING){
 throw new Exception("错误信息:{$error_message},错误文件:{$error_file},错误行数{$error_line}");
 }
 }
 function drive($a){
 echo $a;
 }
 try{
 echo "开车上班<br>";
 drive();//忘记传参,触发自定义错误函数中警告性错误,抛出异常
 }catch(Exception $e){//相当于Exception $e = new Exception(&#39;&#39;);
 echo $e->getMessage().&#39;<br>&#39;;
 echo "换上备胎,继续上班<br>";
 }

b. La classe d'exception personnalisée doit être une sous-classe de la classe système


c. le constructeur, n'oubliez pas d'appeler le constructeur de la classe parent pour l'initialisation



7. Remarque : try peut également être imbriqué dans. essayez


 class BTException extends Exception {
 function __construct($message){
 parent::__construct($message);
 }
 function method(){
 return "打开后备箱,拿出工具,换备胎";
 }
 }
 try{
 echo "开车上班<br>";
 throw new BTException("车子爆胎了!");
 }catch(BTException $e){//相当于Exception $e = new Exception(&#39;&#39;);
 echo $e->getMessage().&#39;<br>&#39;;
 echo $e->method().&#39;<br>&#39;;
 echo "换上备胎,继续上班<br>";
 }


Résumé

 class Err1 extends Exception {
 function __construct($message){
 parent::__construct($message);
 }
 function method(){
 return "纠正错误1";
 }
 }
 class Err2 extends Exception {
 function __construct($message){
 parent::__construct($message);
 }
 function method(){
 return "纠正错误2";
 }
 }
 class Err3 extends Exception {
 function __construct($message){
 parent::__construct($message);
 }
 function method(){
 return "纠正错误3";
 }
 }
 $rand=rand(1,3);
 try{
 switch($rand){
 case 1:
 throw new Err1("发生错误1");
 case 2:
 throw new Err2("发生错误2"); 
 case 3:
 throw new Err3("发生错误3"); 
 }
 }catch(Err1 $e){
 echo $e->getMessage().&#39;<br>&#39;;
 echo $e->method().&#39;<br>&#39;;
 }catch(Err2 $e){
 echo $e->getMessage().&#39;<br>&#39;;
 echo $e->method().&#39;<br>&#39;;
 }catch(Err3 $e){
 echo $e->getMessage().&#39;<br>&#39;;
 echo $e->method().&#39;<br>&#39;;
 }

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