PHP中的错误处理方法详细介绍+示例

2021年3月29日18:33:50 发表评论 826 次浏览

先决条件:错误类型

PHP用于Web开发。 PHP中的错误处理几乎类似于所有编程语言中的错误处理。 PHP中的默认错误处理将提供文件名行号和错误类型。

处理PHP错误的方法:

基本错误处理:使用die()函数,die()函数显示一条消息并退出当前脚本。

语法如下:

die( $message )

例子:

<?php
  
// Php code showing default error handling
  
$file = fopen ( "geeks.txt" , "w" );
?>

注意:

运行上面的代码, 然后geeks.txt文件不存在, 则它将显示运行时错误消息。

运行时错误:

PHP Warning: fopen(geeks.txt): failed to open stream: Permission denied 
in /home/dac923dff0a2558b37ba742613273073.php on line 2

为防止此错误, 请使用die()函数。下面是die()函数的实现:

例子:

<?php
  
// PHP code to check errors
  
// If file is not present 
// then exit from script
if ( ! file_exists ( "geeks.txt" ) ) {
     die ( "File is not present" );
}
  
// If file is present
// then continue
else {
     $file = fopen ( "geeks.txt" , "w" );
}
?>

注意:

如果geeks.txt文件不存在, 则将显示输出。

输出如下

File is not present

自定义错误处理:在PHP中创建自定义错误处理程序非常简单。创建一个在PHP中发生错误时可以调用的函数。

语法如下:

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

参数:此函数接受上述和以下所述的五个参数:

  • $ error_level:它是必填参数, 并且必须是整数。有预定义的错误级别。
  • $ error_message:它是必填参数, 它是用户要打印的消息。
  • $ error_file:它是可选参数, 用于指定发生错误的文件。
  • $ error_line:它是可选参数, 用于指定发生错误的行号。
  • $ error_context:它是可选参数, 用于指定包含每个变量及其发生错误的值的数组。

error_level:这些是可能的错误级别, 在下面列出:

  • 1:.E_ERROR:致命的脚本运行时错误执行已停止
  • 2:E_WARNING:脚本的非致命运行时错误执行已停止
  • 4:E_PARSE:由解析器生成的编译时错误
  • 8:E_NOTICE:脚本发现了可能是错误的内容
  • 16:E_CORE_ERROR:脚本初始启动期间发生的致命错误
  • 32:E_CORE_WARNING:脚本初始启动期间未发生致命错误
  • 8191:E_ALL:所有错误和警告

set_error_handler()函数:创建myerror()函数后, 需要设置自定义错误处理程序, 因为通常情况下PHP会处理它, 但是如果用户执行自定义错误处理, 则用户必须将其设置为参数, 并将myerror函数作为字符串传递出去。

例子:

<?php
  
// Creates my error function which prints message
//to user
function myerror( $error_no , $error_msg ) {
     echo "Error: [$error_no] $error_msg " ;
     echo "\n Now Script will end" ;
      
     // When error occurred script has to be stoped
     die ();
} 
  
// Setting set_error_handler
set_error_handler( "myerror" );
  
$a = 10;
$b = 0;
  
// This will generate error
echo ( $a / $b );;
?>

输出如下:

Error: [2] Division by zero 
 Now Script will end

结论:始终尝试使用"自定义错误处理"进行错误处理, 因为它将根据用户显示更多指定的消息, 这可能会对用户有所帮助。如果使用自定义错误处理无法处理错误, 则发生错误, 默认情况下将停止输出脚本, 但是如果使用自定义错误处理处理错误, 则可以在显示错误消息后继续执行脚本。


木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: