php 错误 异常,PHP错误异常处理

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

在PHP中处理一个错误是非常简单的。

使用die()函数

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

尝试下面的例子,处理如果没有test.xt文件提示错误信息并终止程序。

if(!file_exists("test.txt")) {

die("File not found");

}else {

$file = fopen("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);

它的参数说明如下 -

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

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

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

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

error_context - 可选项 - 指定包含发生错误时使用的每个变量及其值的数组。

可能的错误级别

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

编号

变量

描述

代码值

1

E_ERROR

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

1

2

E_WARNING

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

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级别(从PHP 6.0起,E_STRICT成为E_ALL一部分)

8191

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

int error_reporting ( [int $level] )

以下是创建一个错误处理函数的方式 -

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()来设置它。 现在通过调用一个不存在的函数来检查上面的例子。

error_reporting( E_ERROR );

function handleError($errno, $errstr,$error_file,$error_line) {

echo "出错啦: [$errno] $errstr - $error_file:$error_line";

echo "
";

echo "Terminating PHP Script";

die();

}

//set error handler

set_error_handler("handleError");

//trigger error

myFunction();

?>

异常处理

PHP5有一个类似于其他编程语言的异常模型。异常很重要,对错误处理提供了更好的控制。

这里解释一下与异常有关一些关键字。

try - 用异常的函数应该放在try块中。 如果异常不触发,代码将继续正常。 但是,如果异常触发,则抛出异常。

throw - 这表示如何触发一个异常。每个throw必须至少有一个catch。

catch - catch块检索一个异常并创建一个包含异常信息的对象。

当引发异常时,语句后面的代码将不会被执行,PHP将尝试查找第一个匹配的catch块。 如果一个异常没有被捕获,那么如果有PHP致命错误,则将会发送一个“Uncaught Exception”。

可以抛出异常,并在PHP中捕获。 代码可以被包围在一个try块中。

每次try都必须至少有一个相应的catch块。 可以使用多个catch块来捕捉不同类别的异常。

异常可以在catch块中抛出(或重新抛出)。

示例

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

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类的函数。

getMessage() - 异常的消息。

getCode() - 异常的代码编号。

getFile() - 源文件名。

getLine() - 源文件行数。

getTrace() - backtrace()的一个数组。

getTraceAsString() - 格式化的跟踪字符串。

创建自定义异常处理程序

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

string set_exception_handler ( callback $exception_handler )

这里的exception_handler是当一个未捕获的异常发生时被调用的函数的名字。 在调用set_exception_handler()之前,必须定义这个函数。

示例

function exception_handler($exception) {

echo "Uncaught exception: " , $exception->getMessage(), "

";

}

set_exception_handler('exception_handler');

throw new Exception('Uncaught Exception');

echo "Not Executed

";

?>

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

¥ 我要打赏

纠错/补充

收藏

下一篇:哥,这回真没有了

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值