文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

php7中异常与错误的处理方法

2023-06-14 09:07

关注

这篇文章将为大家详细讲解有关php7中异常与错误的处理方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

异常与错误的概述

什么叫做异常?

异常是指程序运行中不符合预期情况以及与正常流程不同的状况。

比如你链接数据库,在参数都写上去的条件下,发现链接不上去,这就属于不符合预期

可以被 try-catch 捕捉得到

什么叫做错误?

是属于php程序自身的问题,一般是由非法的语法,环境问题导致的,使得编译器无法通过检查,甚至无法运行的情况。
平时遇到的 warming、notice都是错误,只是级别不同而已。

例如:

除了这几种情况,其余全部为异常

异常处理

在以前的 php5.X 中 并且不能被 try-catch 捕捉得到,到了 php 7.x 中,定义了一个 Throwable 接口 并使得大部分的 Error 和
Exception 实现了该接口,我们得以在 try-catch 中抛出该错误

所以说以后想要捕获异常,而你又不知道此异常是 Error 还是 Exception 的话,可以向这样抛出

try{    ……}catch(Throwable $e){    ……}

错误的级别

在 php 中的错误也是有级别的

Parse error >Fatal Error > Waning > Notice >Deprecated

Deprecated 最低级别的错误(不推荐,不建议)使用一些过期函数的时候会出现,程序继续执行Notice 通知级别的错误使用一些未定义变量、常量或者数组key没有加引号的时候会出现,程序继续执行        E_NOTICE      // 运行时通知。表示脚本遇到可能会表现为错误的情况.        E_USER_NOTICE // 用户产生的通知信息。Waning 警告级别的错误程序出问题了,需要修改代码!!!程序继续执行        E_WARNING         // 运行时警告 (非致命错误)。        E_CORE_WARNING    // PHP初始化启动过程中发生的警告 (非致命错误) 。        E_COMPILE_WARNING // 编译警告        E_USER_WARNING    // 用户产生的警告信息Fatal Error 错误级别的错误程序直接报错,需要修改代码!!!中断程序执行,可使用register_shutdown_function()函数在程序终止前触发一个函数        E_ERROR         // 致命的运行错误,错误无法恢复,暂停执行脚本        E_CORE_ERROR    // PHP启动时初始化过程中的致命错误        E_COMPILE_ERROR // 编译时致命性错,就像由Zend脚本引擎生成了一个E_ERROR        E_USER_ERROR    // 自定义错误消息。像用PHP函数trigger_error(错误类型设置为:E_USER_ERROR)Parse error 语法解析错误语法检查阶段报错,需要修改代码!!!中断程序执行,除了修改ini文件,将错误信息写到日志中,什么也做不了        E_PARSE  //编译时的语法解析错误

自定义错误处理程序

有的时候,php 中自带的错误处理程序,并不能完全满足我们得需要,大部分时候,我们都需要手动重写异常处理。

php 给我们提供了三个函数来帮助我们来处理,分别是

set_error_handler()
set_exception_handler()
register_shutdown_function()
举例register_shutdown_function('shutdown');function shutdown(){    if ($error = error_get_last()) {        var_dump($error);    }}$name   //没写 ; 号

执行结果
Parse error: syntax error, unexpected ';' in /app/swoole/errorDemo.php on line 34
Emmmmm 这不扯淡吗? 分明分明没有执行呢?

其实原因使因为,程序执行前,我们 php 会先检查我们程序的语法问题,如果没有问题,我们才能执行我们的程序。

我们上面的代码没用通过我们的语法检查,所以直接报错。

那么问题来了? 我们在框架中的时候,为什么是框架都是框架给我们报错呢?

框架的错误处理

在框架中,其代码是通过一个入口文件来加载的。而我们php检测语法错误的时候,只检查我们的 index.php 有它 require 是不会受到检测的。当我们代码出错时,那是在 run-time 中检测的错误,所以我们框架中的可以相应错误

关于“php7中异常与错误的处理方法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯