Heim  >  Artikel  >  Backend-Entwicklung  >  Beispiel für eine PHP-Fehlerbehandlungsmethode

Beispiel für eine PHP-Fehlerbehandlungsmethode

小云云
小云云Original
2018-03-07 10:03:511508Durchsuche

Systemfehlerbehandler:

Unter normalen Umständen werden Fehler in PHP normal ausgegeben, aber in einigen Frameworks kann es sein, dass das Framework selbst über einen eigenen Verarbeitungsmechanismus verfügt. oder es kann im Code verarbeitet werden, normalerweise diese Funktionseinstellungen:

1.error_reporting(); Setzt die Fehlerebene von PHP und gibt die aktuelle Ebene zurück

error_reporting(report_level)

Wenn die Parameterebene nicht angegeben ist, wird die aktuelle Fehlerebene zurückgegeben. Die folgenden Elemente sind mögliche Werte des Niveaus:

3264Abfangbarer schwerwiegender Fehler, ähnlich wie E_ERROR, kann aber von einem benutzerdefinierten Handler abgefangen werden (siehe set_error_handler()) Alle Fehler und Warnungen außer Level E_STRICT (in PHP6.0 wird E_STRICT ein E_ALL-Teil sein)

Wert

Konstante

Beschreibung

1

E_ERROR

SCHWERWIEGENDER Laufzeitfehler. Dieser Fehler kann nicht recycelt werden. Die Skriptausführung wurde unterbrochen.

2

E_WARNING

Nicht schwerwiegende Laufzeitwarnung. Die Skriptausführung wird nicht unterbrochen.

4

E_PARSE

Fehler bei der Kompilierungszeitanalyse. Beim Parsen sollten nur Fehler

8

E_NOTICE

Runtime generiert werden Benachrichtigung. Das gefundene Skript kann ein Fehler sein, aber normalerweise kann beim Ausführen eines Skripts auch E_CORE_ERROR auftreten

16

Schwerwiegender Fehler beim PHP-Start. Das ist wie E_ERROR

E_CORE_WARNING

Warnung an PHP-Start. Das ist wie E_WARNING

E_COMPILE_ERROR

Schwerwiegende Kompilierung -Zeitfehler. Dies ähnelt dem E_ERROR

, der von der Zend-Skript-Engine generiert wird

128

E_COMPILE_WARNING

Nicht schwerwiegende Warnung zur Kompilierungszeit. Dies ist wie die Generierung von E_WARNING

256

E_USER_ERROR

Fatal Vom Benutzer generierter Fehler, ähnlich dem vom Programmierer mithilfe der PHP-Funktion trigger_error() gesetzten E_ERROR

512

E_USER_WARNING

Eine nicht schwerwiegende, vom Benutzer generierte Warnung, ähnlich der E_WARNING, die vom Programmierer mithilfe der PHP-Funktion trigger_error festgelegt wurde

1024

E_USER_NOTICE

Eine vom Benutzer generierte Benachrichtigung, ähnlich der E_NOTICE, die vom Programmierer mithilfe der PHP-Funktion trigger_error

2048

E_STRICT

Laufzeitbenachrichtigung. PHP empfiehlt Änderungen an Ihrem Code, um die Interoperabilität und Kompatibilität dieses Codes zu verbessern

8191

E_ALL

Hier ist zu beachten, dass die Fehlerausgabe deaktiviert ist, wenn $level 0 ist, d. h. es werden keine Fehler ausgegeben.

2.set_error_handler()

Definition und Verwendung

Die Funktion set_error_handler() legt eine benutzerdefinierte Fehlerbehandlungsfunktion fest.

Diese Funktion wird verwendet, um zur Laufzeit eine eigene Fehlerbehandlungsmethode des Benutzers zu erstellen.

Diese Funktion gibt den alten Fehlerbehandler oder bei einem Fehler Null zurück.

Syntax

set_error_handler(error_function,error_types)

参数

描述

error_function

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

error_types

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

Description

error_function

Erforderlich. Gibt die Funktion an, die ausgeführt werden soll, wenn ein Fehler auftritt.

Optional. Gibt an, auf welcher Fehlerberichtsebene benutzerdefinierte Fehler angezeigt werden. Der Standardwert ist „E_ALL“.

/**
 *
 * @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);
Tipp: Wenn diese Funktion verwendet wird, wird die standardmäßige PHP-Fehlerbehandlungsfunktion vollständig umgangen und ggf. ein benutzerdefinierter Fehler ausgegeben handler Das Skript muss beendet werden (die()), Hinweis: Wenn vor der Ausführung des Skripts ein Fehler auftritt, wird der benutzerdefinierte Fehlerhandler nicht verwendet, da das benutzerdefinierte Programm zu diesem Zeitpunkt noch nicht registriert wurde. Der Testcode lautet wie folgt:

//通过上案例可以得知,在注册 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错误机制

Das obige ist der detaillierte Inhalt vonBeispiel für eine PHP-Fehlerbehandlungsmethode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn