PHP7捕获错误异常

   2016-11-22 0
核心提示:公司最近一个项目使用的是PHP7,发现使用 php5里面的 Exception 类捕获不到致命错误。查了一下手册,PHP7的错误报告机制已改变,大多数错误被作为 Error 异常抛出php官网说明是这种 Error 异常可以像 Exception 异常一样被第一个匹配的 try / catch 块所捕获

公司最近一个项目使用的是PHP7,发现使用 php5里面的 Exception 类捕获不到致命错误。

查了一下手册,PHP7的错误报告机制已改变,大多数错误被作为 Error 异常抛出

php官网说明是

这种 Error 异常可以像 Exception 异常一样被第一个匹配的 try / catch 块所捕获。如果没有匹配的 catch 块,则调用异常处理函数(事先通过 set_exception_handler() 注册)进行处理。 如果尚未注册异常处理函数,则按照传统方式处理:被报告为一个致命错误(Fatal Error)。

Error 类并非继承自 Exception 类,所以不能用 catch (Exception $e) { … } 来捕获 Error。你可以用 catch (Error $e) { … },或者通过注册异常处理函数( set_exception_handler())来捕获 Error。

来一段代码实例

try {
    echo asdfasdf('1');  //未定义的函数
} catch (Exception $e) {
    // Handle exception
    echo 'Exception';
} catch (Error $e) { // Clearly a different type of object
    // Log error and end gracefully
    echo 'Error';
}

最后输出的是 Error 。。。

所以用PHP7捕获异常防止错误的话,建议 catch :Exception 和 Error

 
标签: PHP7
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • php7.2.4安装rabbitmq扩展的过程中错误处理
    1、根据自己php的版本选择 amqp包的版本,我开始随便选择了amqp-1.6.1.tar.gz make之后出现如下错误:/opt/amqp-1.6.1/amqp.c:984:37: error: too many arguments to function ‘zend_register_internal_class_ex’amqp_queue_exception_class_entry
    02-09
  • tp5+php7 实现发送邮件(qq邮箱和企业邮箱均验证)
    tp5+php7 实现发送邮件(qq邮箱和企业邮箱均验
    一:   准备工作              1:phpmailer核心文件下载地址:https://github.com/PHPMailer/PHPMailer               2、PHP扩展开启,openssl和sockets,打开php.ini文件,将这两个扩展钱的;号去掉。                    ①  
    02-09
  • 第二章:php7扩展开发[2] 怎么样创建类
    1.创建扩展进入${php-src}/ext目录,执行./ext_skel--extname=route,这时目录下会出现一个route的目录,cd ./route2.修改config.m4内容第十行左右,去掉dnlPHP_ARG_WITH(route, for route support,dnl Make sure that the comment is aligned:[ --with-route
    02-09
  • PHP之Trait详解 php7 trait
    PHP之Trait详解 php7 trait
    php从以前到现在一直都是单继承的语言,无法同时从两个基类中继承属性和方法,为了解决这个问题,php出了Trait这个特性用法:通过在类中使用use 关键字,声明要组合的Trait名称,具体的Trait的声明使用Trait关键词,Trait不能实例化 与普通类的异同:相同:t
    02-09
  • ubuntu14.04 安装apache+php7.2*
    1.安装apache2   sudo apt-get update  sudo apt-get install apache2  这时http://你机器的ip,就可以访问了   2.安装php7.0+及一些必要的扩展   apt-get install software-properties-common python-software-properties add-apt-repository p
    02-09
  • PHP7新功能及语法变化总结 PHP新特性
    1、标量类型声明有两种模式: 强制 (默认) 和 严格模式。 现在可以使用下列类型参数(无论用强制模式还是严格模式): 字符串(string), 整数 (int), 浮点数 (float), 以及布尔值 (bool)。2、返回值类型声明返回类型声明指明了函数返回值的类型。可用的类型与参
    02-09
  • php7修改时区无效如何解决
    这篇文章主要介绍“php7修改时区无效如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php7修改时区无效如何解决”文章能帮助大家解决问题。php7修改时区无效的解决办法:1、从代码中动态修改时区,从而获
    02-08 php
  • PHP7框架之Lumen之Hello World。
    背景:听说Lumen起家是以一个叫av的框架,larvael。以Auth2.0起步,Lumen是精简版本,于是想了解一下。发现居然边TM路由就卡住了,Fuck,不光是我老外也有这个问题,都没有解决,主要是一个Nginx的转写问题,这块在Lumen的文档里写的很垃圾,我都不知这些人是
    02-05 PHP7
  • 亿级用户PC主站的PHP7升级实践
    亿级用户PC主站的PHP7升级实践
    伴随业务的增长,系统压力也在不断增加,再加上机房机架趋于饱和,无法更加有效应对各种突发事件。在这样的情况下,PC主站升级为PHP 7,有哪些技术细节可以分享?背景新浪微博在2016年Q2季度公布月活跃用户(MAU)较上年同期增长33%,至2.82亿;日活跃用户(D
    02-05 PHP7
  • PHP7 内核分析:变量的设计
    变量的结构变量的数据结构变量保存在zval的结构体中(与 PHP5 相同,但数据结构做了很大改变)。zval结构体定义在Zend/zend_types.h文件中,结构体如下:typedef struct _zval_struct zval;struct _zval_struct {zend_valuevalue;/* value */union {struct {Z
    02-05 PHP7
点击排行