Maison développement back-end tutoriel php Comment gérer les erreurs en PHP ?

Comment gérer les erreurs en PHP ?

May 12, 2023 am 08:01 AM
php错误处理 错误日志记录 异常处理

PHP est un langage de programmation couramment utilisé, particulièrement adapté au développement Web. Les développeurs rencontreront inévitablement diverses erreurs et exceptions lors de l'écriture du code. Un bon mécanisme de gestion des erreurs contribue à améliorer la robustesse et la maintenabilité du code et garantit la stabilité et la sécurité du code. Cet article explique comment gérer les erreurs en PHP.

  1. Niveaux d'erreur

Il existe plusieurs niveaux d'erreur en PHP Vous pouvez contrôler quelles informations d'erreur seront enregistrées et affichées en définissant le niveau d'erreur.

  • E_ERROR : Erreur fatale qui entraînera l'arrêt de l'exécution du script.
  • E_WARNING : Message d'avertissement non fatal, le script continuera à s'exécuter.
  • E_NOTICE : fournit des informations d'avertissement pour les situations susceptibles de causer des problèmes, et le script continuera à s'exécuter.
  • E_STRICT : fournit des informations d'avertissement sur la compatibilité et la standardisation pour l'amélioration de la qualité du code.
  • E_DEPRECATED : fournit des informations d'avertissement concernant la suppression obsolète et future d'une fonctionnalité.

Pour contrôler ces niveaux d'erreur, vous pouvez utiliser la fonction error_reporting(). Par exemple, le code suivant est défini pour afficher uniquement les messages d'erreur de niveau E_ERROR et E_WARNING :

1

2

3

<?php

error_reporting(E_ERROR | E_WARNING);

?>

Copier après la connexion
  1. Fonctions de gestion des erreurs

PHP fournit une série de fonctions pour gérer différents types de messages d'erreur. Ces fonctions seront définies comme fonctions de gestion des erreurs pour gérer les niveaux d'erreur correspondants.

  • set_error_handler() : définissez une fonction de gestion des erreurs personnalisée.
  • set_exception_handler() : définissez une fonction de gestion des exceptions personnalisée.
  • register_shutdown_function() : enregistre une fonction à appeler automatiquement lorsque l'exécution du script est terminée.

Ce qui suit est un exemple de code pour montrer comment implémenter une fonction de gestion des erreurs personnalisée :

1

2

3

4

5

6

7

8

9

10

<?php

function custom_errorhandler($errno, $errstr, $errfile, $errline) {

    echo "Error: [$errno] $errstr - $errfile:$errline";

}

 

set_error_handler("custom_errorhandler");

 

// 以下代码会产生一个错误

$test = 2 / 0;

?>

Copier après la connexion

Le code ci-dessus affichera :

1

Error: [2] Division by zero - /var/www/example.php:7

Copier après la connexion

La fonction error_handler() est personnalisée ici, qui sera appelée lorsqu'une erreur se produit pendant exécution du script.

  1. Gestion des exceptions

PHP prend également en charge les exceptions, et la gestion des exceptions peut être réalisée via les mots-clés try, catch et throw.

Le code dans les blocs try peut générer des exceptions. Si le code du bloc try lève une exception, le reste du code du bloc ne sera pas exécuté, mais passera immédiatement au bloc catch. Le bloc catch tentera d'intercepter l'exception levée et de la gérer en conséquence.

Si aucune exception n'est interceptée, l'exécution du code après le bloc catch continue.

Ce qui suit est un exemple de code pour une gestion simple des exceptions :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<?php

function divide($a, $b) {

    if ($b == 0) {

        throw new Exception('Cannot divide by zero');

    } else {

        return $a / $b;

    }

}

 

try {

    echo divide(2, 0);

} catch (Exception $e) {

    echo 'Caught exception: ', $e->getMessage();

}

?>

Copier après la connexion

Sortie :

1

Caught exception: Cannot divide by zero

Copier après la connexion

Dans le code ci-dessus, une exception est levée à partir de la fonction Divide(). La fonction Divide() est appelée dans le bloc de code try. Parce que l'entrée $b=0, une exception est levée. Attrapez l'exception dans le bloc de code catch et affichez les informations.

  1. Logging

Afin de mieux suivre et résoudre les erreurs, la journalisation de l'application est une partie importante. Vous pouvez utiliser la fonction error_log() intégrée de PHP pour enregistrer les informations d'erreur dans un fichier. Le code est le suivant :

1

2

3

4

5

6

7

8

9

10

11

<?php

function custom_errorhandler($errno, $errstr, $errfile, $errline) {

    $log_message = "Error: [$errno] $errstr - $errfile:$errline";

    error_log($log_message, 3, "error.log");

}

 

set_error_handler("custom_errorhandler");

 

// 以下代码会产生一个错误

$test = 2 / 0;

?>

Copier après la connexion

Le code ci-dessus enregistrera les informations d'erreur dans le fichier error.log.

  1. Conclusion

La gestion des erreurs est une partie très importante de tout langage de programmation. PHP propose diverses façons de gérer les erreurs, notamment la définition de niveaux d'erreur, la définition de fonctions de gestion des erreurs personnalisées, l'utilisation de la gestion et de la journalisation des exceptions, etc. Une gestion correcte des erreurs peut améliorer la stabilité, la robustesse et la maintenabilité du code, garantissant ainsi la fiabilité et la sécurité de l'application.

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

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Exceptions de fonctions C++ et multithreading : gestion des erreurs dans les environnements concurrents Exceptions de fonctions C++ et multithreading : gestion des erreurs dans les environnements concurrents May 04, 2024 pm 04:42 PM

Exceptions de fonctions C++ et multithreading : gestion des erreurs dans les environnements concurrents

Comment la gestion des exceptions C++ prend-elle en charge les routines de gestion des erreurs personnalisées ? Comment la gestion des exceptions C++ prend-elle en charge les routines de gestion des erreurs personnalisées ? Jun 05, 2024 pm 12:13 PM

Comment la gestion des exceptions C++ prend-elle en charge les routines de gestion des erreurs personnalisées ?

Quelle est la relation entre les appels récursifs et la gestion des exceptions dans les fonctions Java ? Quelle est la relation entre les appels récursifs et la gestion des exceptions dans les fonctions Java ? May 03, 2024 pm 06:12 PM

Quelle est la relation entre les appels récursifs et la gestion des exceptions dans les fonctions Java ?

Gestion des exceptions en technologie C++ : Comment gérer correctement les exceptions dans un environnement multithread ? Gestion des exceptions en technologie C++ : Comment gérer correctement les exceptions dans un environnement multithread ? May 09, 2024 pm 12:36 PM

Gestion des exceptions en technologie C++ : Comment gérer correctement les exceptions dans un environnement multithread ?

Gestion des exceptions dans un environnement multithread Java Gestion des exceptions dans un environnement multithread Java May 01, 2024 pm 06:45 PM

Gestion des exceptions dans un environnement multithread Java

Comment gérer les exceptions dans les expressions C++ Lambda ? Comment gérer les exceptions dans les expressions C++ Lambda ? Jun 03, 2024 pm 03:01 PM

Comment gérer les exceptions dans les expressions C++ Lambda ?

Gestion des exceptions PHP : comprendre le comportement du système grâce au suivi des exceptions Gestion des exceptions PHP : comprendre le comportement du système grâce au suivi des exceptions Jun 05, 2024 pm 07:57 PM

Gestion des exceptions PHP : comprendre le comportement du système grâce au suivi des exceptions

Comment gérer les exceptions C++ cross-thread ? Comment gérer les exceptions C++ cross-thread ? Jun 06, 2024 am 10:44 AM

Comment gérer les exceptions C++ cross-thread ?

See all articles