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