php版本与程序错误,PHP 实用教程-错误和异常处理

发生错误后会终止程序执行吗?

$n = 1 / 0;

echo "end";

不会,也就是说,上面的 end 仍然会执行。

显示错误

当 PHP 程序发生错误时,如果错误没有显示出来,可能是禁用了错误显示。解决方法是:PHP 目录下 php.ini,display_errors = Off 改为 display_errors = On,重启 Apache。

die()、exit()

这两个函数是一个意思,他们的作用就是抛出一个错误,然后终止程序的执行,它们可以跟一个参数用来输出到客户端以说明发生了什么错误。

除了发生重大的错误,这两个函数意义不大,因为它只是简单地抛出错误,然后野蛮地终止后面程序的执行。

自定义错误处理程序

function processError($error_level, $error_message, $error_file, $error_line, $error_context)

{

$contents = "错误级别:" . $error_level . "\r\n" .

"错误信息:" . $error_message . "\r\n" .

"错误所在文件:" . $error_file . "\r\n" .

"错误所在行:" . $error_line . "\r\n" .

"错误相关信息:" . $error_context;

file_put_contents("log_" . time() . ".txt", $contents);

}

set_error_handler("processError");

$n = 1 / 0;

上述代码中,当错误发生时,不论 display_errors 是 On 还是 Off,都不会将错误输出到客户端,而是由自定义错误处理程序 processError 来执行,当然错误处理程序和注册错误处理程序的代码应该在最前面。错误处理程序的参数个数可以是 0 - 5 个。

如果错误处理程序中又出错了,会不会造成死循环呢?不会,因为,错误处理程序中的错误还是由系统来处理。

异常处理

在 PHP 中用抛出异常用:

throw new Exception("异常信息");

捕获异常有两种方法:

try

{

throw new Exception("异常信息");

}

catch (Exception $e)

{

echo $e->getMessage();

}

Exception 对象除了 getMessage() 方法,还有其他一些方法 getCode()、getFile()、getLine() 等。

另外一种捕获异常的方法是使用 set_exception_handler 方法,用法同 set_error_handler,只是异常处理程序只有一个 Exception 类型的参数。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值