加入收藏 | 设为首页 | 会员中心 | 我要投稿 52站长网 (https://www.52zhanzhang.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

定义自定义错误处理功能

发布时间:2022-11-02 13:31:51 所属栏目:PHP教程 来源:网络
导读: 错误处理是捕获程序引发错误的过程,然后采取适当的措施。如果您正确处理错误,那么可能会导致许多不可预见的后果。
它非常简单的在PHP中处理错误。
使用die()函数
在编写PHP程序时,您应

错误处理是捕获程序引发错误的过程,然后采取适当的措施。如果您正确处理错误,那么可能会导致许多不可预见的后果。

它非常简单的在PHP中处理错误。

使用die()函数

在编写PHP程序时,您应该检查所有可能的错误情况,然后再继续执行,并在需要时采取适当的措施。

尝试以下示例,而不使用/tmp/test.xt文件和此文件。

<?php
   if(!file_exists("/tmp/test.txt")) {
      die("File not found");
   }else {
      $file = fopen("/tmp/test.txt","r");
      print "Opend file sucessfully";
   }
   // Test of the code here.
?>

这样你就可以编写一个高效的代码。使用上述技术,您可以在错误时停止程序,并显示更有意义和用户友好的消息。

定义自定义错误处理功能

您可以编写自己的函数来处理任何错误。PHP为您提供了一个定义错误处理功能的框架。

此功能必须能够处理至少两个参数(错误级别和错误消息),但最多可以接受五个参数(可选:文件,行号和错误上下文)

用法

error_function(error_level,error_message, error_file,error_line,error_context);

没有参数说明

1

error_level

必需 - 指定用户定义错误的错误报告级别。必须是数值。

2

错误信息

必需 - 指定用户定义错误的错误消息

3

error_file

可选 - 指定发生错误的文件名

4

error_line

可选 - 指定发生错误的行号

5

error_context

可选 - 指定在发生错误时包含每个变量及其值的数组

可能的错误级别

这些错误报告级别是用户定义的错误处理程序可以使用的不同类型的错误。这些值组合使用| 操作符

没有常数和描述值

1

.E_ERROR

致命的运行时错误。脚本的执行停止

1

2

E_警告

非致命的运行时错误。脚本的执行不会停止

2

3

E_PARSE

编译时解析错误。解析错误只能由解析器生成。

4

4

E_NOTICE

运行时通知。该脚本找到可能是错误的东西,但也可能在正常运行脚本时发生

8

5

E_CORE_ERROR

在PHP初始启动期间发生的致命错误。

16

6

E_CORE_WARNING

非致命的运行时错误。这在PHP的初始启动期间发生。

32

7

E_USER_ERROR

致命的用户生成的错误。这就像程序员使用PHP函数trigger_error()设置的E_ERROR,

256

8

E_USER_WARNING

非致命的用户生成的警告。这就像程序员使用PHP函数trigger_error()设置的E_WARNING

512

9

E_USER_NOTICE

用户生成的通知。这就像程序员使用PHP函数trigger_error()设置的E_NOTICE一样,

1024

10

E_STRICT

运行时通知。允许PHP建议您的代码更改,这将确保您的代码的最佳互操作性和转发兼容性。

2048

11

E_RECOVERABLE_ERROR

可怕的致命错误。这就像一个E_ERROR,但是可以被用户定义的句柄捕获(另请参见set_error_handler())

4096

12

E_ALL

所有错误和警告,除E_STRICT(E_STRICT将作为PHP 6.0之前的E_ALL的一部分)

8191

所有上述错误级别可以使用以下PHP内置库函数设置,其中level cab是上表中定义的任何值。

int error_reporting ( [int $level] )

以下是您可以创建一个错误处理功能的方式 -

<?php
   function handleError($errno, $errstr,$error_file,$error_line) {
      echo "Error: [$errno] $errstr - $error_file:$error_line";
      echo "
"
; echo "Terminating PHP Script"; die(); } ?>

定义自定义错误处理程序后,您需要使用PHP内置库set_error_handler函数进行设置。现在通过调用一个不存在的函数来检查我们的例子。

<?php
   error_reporting( E_ERROR );
   
   function handleError($errno, $errstr,$error_file,$error_line) {
      echo "Error: [$errno] $errstr - $error_file:$error_line";
      echo "
"
; echo "Terminating PHP Script"; die(); } //set error handler set_error_handler("handleError"); //trigger error myFunction(); ?>

例外处理

PHP 5具有与其他编程语言类似的异常模型。异常很重要,可以更好地控制错误处理。

让我们解释一下有关异常的新关键字。

当抛出异常时,该语句后面的代码将不会被执行,并且PHP将尝试找到第一个匹配的catch块。如果没有捕获到异常,将发出一个PHP致命错误PHP异常处理,并显示“未捕获的异常...

以下是一段代码,将此代码复制并粘贴到一个文件中并验证结果。

<?php
   try {
      $error = "Always throw this error";
      throw new Exception($error);
      
      // Code following an exception is not executed.
      echo "Never executed";
   }catch (Exception $e) {
      echo "Caught exception: ",  $e->getMessage(), "
";
   }
   
   // Continue execution
   echo "Hello World";
?>

在上面的例子中,$ e-> getMessage函数用于获取错误消息。有以下可以从Exception类使用的功能。

创建自定义异常处理程序

您可以定义自己的自定义异常处理程序。使用以下函数设置用户定义的异常处理函数。

string set_exception_handler ( callback $exception_handler )

这里exception_handler是发生未捕获异常时要调用的函数的名称。在调用set_exception_handler()之前,必须定义此函数。

<?php
   function exception_handler($exception) {
      echo "Uncaught exception: " , $exception->getMessage(), "
";
   }
	
   set_exception_handler("exception_handler");
   throw new Exception("Uncaught Exception");
   
   echo "Not Executed
";
?>

在PHP错误处理函数中检查完整的错误处理函数集

(编辑:52站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!