Maison >développement back-end >Problème PHP >La différence entre la gestion des exceptions PHP et la gestion des erreurs

La différence entre la gestion des exceptions PHP et la gestion des erreurs

(*-*)浩
(*-*)浩original
2019-09-16 10:21:394251parcourir

Les concepts d'« erreur » et d'« exception » sont très similaires et peuvent facilement être confondus. « Erreur » et « exception » indiquent qu'il y a un problème avec le projet et fournissent tous deux des informations et des types d'erreur pertinents.

La différence entre la gestion des exceptions PHP et la gestion des erreurs

Cependant, le « mécanisme d'exception » est apparu après le « mécanisme d'erreur », et « l'exception » est l'inconvénient d'éviter les « erreurs ». (Apprentissage recommandé : Programmation PHP du débutant à compétent)

Le point le plus important est que, parce que les informations sur les "erreurs" ne sont pas riches, la description de fonction la plus courante que nous avons vue est : Retour * en cas de succès **, renvoie FALSE lorsqu'une erreur se produit. Cependant, il peut y avoir de nombreuses raisons pour une erreur de fonction, et il existe encore plus de types d'erreurs. Un simple FALSE ne peut pas indiquer à l'appelant le message d'erreur spécifique

<.>

En PHP, les exceptions dans le code lui-même (généralement causées par l'environnement ou une syntaxe illégale) sont appelées erreurs, et les erreurs logiques qui se produisent pendant le fonctionnement sont appelées exceptions. Les erreurs ne peuvent pas être gérées par le code, et les exceptions peuvent l'être. géré via le traitement try./catch.

Exception

Exception est un objet de la classe Exception. Il est lancé lorsqu'on rencontre une situation irréparable. Lorsqu'un problème survient, une exception est utilisée pour prendre. En déléguant des responsabilités, les exceptions peuvent également être utilisées de manière défensive pour anticiper les problèmes potentiels et atténuer leur impact.

L'objet Exception a deux propriétés principales : l'une est le message et l'autre est le code numérique. Nous pouvons obtenir ces deux propriétés en utilisant respectivement getCode() et getMessage().

Gestionnaire d'exceptions

Alors, comment devrions-nous intercepter chaque exception qui peut être levée ?

PHP nous permet d'enregistrer un gestionnaire d'exceptions global pour intercepter toutes les exceptions non interceptées. Les gestionnaires d'exceptions sont enregistrés à l'aide de la fonction set_exception_handler() (des fonctions anonymes sont utilisées ici).

set_exception_handler(function (Exception $e)
{
	echo "我自己定义的异常处理".$e->getMessage();
});
throw new Exception("this is a exception");
 
//运行结果:我自己定义的异常处理this is a exception

Erreurs

En plus des exceptions, PHP fournit également des fonctions pour signaler les erreurs. PHP peut déclencher différents types d'erreurs, telles que des erreurs fatales, des erreurs d'exécution, des erreurs de compilation, des erreurs de démarrage et des erreurs déclenchées par l'utilisateur. La méthode de rapport d'erreurs peut être définie dans php.ini (pas d'explication supplémentaire ici)

Gestionnaire d'erreurs

Comme le gestionnaire d'exceptions, nous

également Vous pouvez utiliser set_error_handler() pour enregistrer un gestionnaire d'erreurs global et utiliser votre propre logique pour intercepter et gérer les erreurs PHP. Nous devons appeler la fonction die() ou exit() dans le gestionnaire d'erreurs. S'il n'est pas appelé, le script PHP poursuivra son exécution à partir du point où l'erreur s'est produite. Comme suit :

set_error_handler(function ($errno,$errstr,$errfile,$errline)//常用的四个参数
{
	echo "错误等级:".$errno."<br>错误信息:".$errstr."<br>错误的文件名:".$errfile."<br>错误的行号:".$errline;
	exit();
});
 
trigger_error("this is a error");//自行触发的错误
 
echo &#39;正常&#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