Maison  >  Article  >  développement back-end  >  Exemple de méthode de gestion des erreurs PHP

Exemple de méthode de gestion des erreurs PHP

小云云
小云云original
2018-03-07 10:03:511481parcourir

Gestionnaire d'erreurs système :

Dans des circonstances normales en PHP, les erreurs seront générées normalement, mais dans certains frameworks, cela peut affecter la sortie d'erreur. Il se peut que le framework lui-même ait son propre mécanisme de traitement, ou il peut Il est traité dans le code, généralement ces paramètres de fonction :

1.error_reporting(); Définir le niveau d'erreur de PHP et renvoyer le niveau actuel

error_reporting(report_level)

Si le niveau du paramètre n'est pas spécifié, le niveau d'erreur actuel sera renvoyé. Les éléments suivants sont des valeurs possibles de niveau :

3264Erreur fatale capturable, similaire à E_ERROR, mais peut être détectée par un gestionnaire défini par l'utilisateur (voir set_error_handler()) Toutes les erreurs et avertissements sauf niveau E_STRICT (en PHP6.0, E_STRICT fera partie de E_ALL)

Valeur

Constante

Description

1

E_ERROR

Erreur d'exécution FATALE. Cette erreur ne peut pas être recyclée. L'exécution du script a été interrompue.

2

E_WARNING

Avertissement d'exécution non fatal . L'exécution du script n'est pas interrompue.

4

E_PARSE

Erreur d'analyse du temps de compilation. L'analyse ne devrait générer que des erreurs

8

E_NOTICE

Runtime notification. Le script trouvé peut être un bug, mais généralement lors de l'exécution d'un script, E_CORE_ERROR peut également se produire

16

Erreur fatale au démarrage de PHP. C'est comme E_ERROR

E_CORE_WARNING

Avertissement activé Démarrage PHP. C'est comme E_WARNING

E_COMPILE_ERROR

Compilation fatale -erreur de temps. C'est comme le E_ERROR

généré par le moteur de script Zend

128

E_COMPILE_WARNING

Avertissement non fatal au moment de la compilation. C'est comme générer E_WARNING

256

E_USER_ERROR

Fatal erreur générée par l'utilisateur, similaire à E_ERROR définie par le programmeur à l'aide de la fonction PHP trigger_error()

512

E_USER_WARNING

Un avertissement non fatal généré par l'utilisateur, similaire au E_WARNING défini par le programmeur à l'aide de la fonction PHP trigger_error

1024

E_USER_NOTICE

Une notification générée par l'utilisateur, similaire à la E_NOTICE définie par le programmeur à l'aide de la fonction PHP trigger_error

2048

E_STRICT

Notification d'exécution. PHP recommande des modifications à votre code pour faciliter l'interopérabilité et la compatibilité de ce code

8191

E_ALL

Il convient de noter ici que lorsque $level est 0, la sortie d'erreur est désactivée, c'est-à-dire qu'aucune erreur ne sera générée.

2.set_error_handler()

Définition et utilisation

La fonction set_error_handler() définit une fonction de gestion des erreurs définie par l'utilisateur.

Cette fonction est utilisée pour créer la propre méthode de gestion des erreurs de l'utilisateur pendant l'exécution.

Cette fonction renvoie l'ancien gestionnaire d'erreurs, ou null en cas d'échec.

Syntaxe

set_error_handler(error_function,error_types)

参数

描述

error_function

必需。规定发生错误时运行的函数。

error_types

可选。规定在哪个错误报告级别会显示用户定义的错误。默认是 "E_ALL"。

Paramètres

td>

Description

error_function

Obligatoire. Spécifie la fonction à exécuter lorsqu'une erreur se produit.

/**
 *
 * @param type $error_level 错误级别
 * @param type $error_message    错误信息
 * @param type $error_file 可选 错误文件
 * @param type $error_line 可选 错误行
 * @param type $error_context 可选。规定一个数组,包含了当错误发生时在用的每个变量以及它们的值。
 */
function my_error($error_level, $error_message, $error_file, $error_line, $error_context) {
  echo date('Y-m-d H:i:s') . $error_level . $error_message . $error_file . $error_line;
  var_dump($error_context);
}
set_error_handler('my_error', E_ALL);
print_r($a);
Facultatif. Spécifie à quel niveau de rapport d'erreurs les erreurs définies par l'utilisateur sont affichées. La valeur par défaut est "E_ALL".
Astuce : Si cette fonction est utilisée, la fonction standard de gestion des erreurs PHP sera complètement contournée, et si nécessaire, une erreur définie par l'utilisateur handler Le script doit être terminé (die()), Remarque : si une erreur se produit avant l'exécution du script, le gestionnaire d'erreur personnalisé ne sera pas utilisé car le programme personnalisé n'a pas été enregistré à ce moment-là. Le code du test est le suivant :

//通过上案例可以得知,在注册 my_error 方法时,系统会自动覆盖原有的错误处理 error_fuction() 方法
以上程序运行结果:

自定义错误触发器

定义和用法

trigger_error() 函数创建用户定义的错误消息。

trigger_error() 用于在用户指定的条件下触发一个错误消息。它与内建的错误处理器一同使用,也可以与由 set_error_handler() 函数创建的用户自定义函数使用。

如果指定了一个不合法的错误类型,该函数返回 false,否则返回 true。

语法

trigger_error(error_message,error_types)

参数

描述

error_message

必需。规定错误消息。长度限制为 1024 个字符。

error_types

可选。规定错误消息的错误类型。 可能的值:

  • E_USER_ERROR

  • E_USER_WARNING

  • E_USER_NOTICE

测试代码如下:


/**
 *
 * @param type $level
 * @param type $msg
 */
function my_error($level, $msg) {
  switch ($level) {
  case E_USER_ERROR:
    echo "ERROR:<br data-filtered="filtered">";
    break;
  case E_USER_WARNING:
    echo "WARNING:<br data-filtered="filtered">";
    break;
  case E_USER_NOTICE:
    echo "NOTICE:<br data-filtered="filtered">";
    break;
  default:
    break;
  }
  echo "错误编号:" . $level . " <br data-filtered="filtered">";
  echo "错误信息:" . $msg;
}
//注册错误处理器
set_error_handler(&#39;my_error&#39;);
if (89 > 8) {
  //调用错误触发器
  trigger_error(&#39;这是错误啊&#39;, E_USER_WARNING);
}

运行结果如下:

WARNING:
错误编号:512
错误信息:这是错误啊

相关推荐:

php错误处理和日志记录

PHP错误与异常调试视频教程资源分享

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