分享好友 编程语言首页 频道列表

PHP7捕获错误异常

PHP教程  2016-11-22 21:130

公司最近一个项目使用的是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

查看更多关于【PHP教程】的文章

展开全文
相关推荐
反对 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

0评论2023-02-09985

第二章: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

0评论2023-02-09741

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

0评论2023-02-09869

PHP7新功能及语法变化总结 PHP新特性
1、标量类型声明有两种模式: 强制 (默认) 和 严格模式。 现在可以使用下列类型参数(无论用强制模式还是严格模式): 字符串(string), 整数 (int), 浮点数 (float), 以及布尔值 (bool)。2、返回值类型声明返回类型声明指明了函数返回值的类型。可用的类型与参

0评论2023-02-09878

php7修改时区无效如何解决
这篇文章主要介绍“php7修改时区无效如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php7修改时区无效如何解决”文章能帮助大家解决问题。php7修改时区无效的解决办法:1、从代码中动态修改时区,从而获

0评论2023-02-08517

PHP7框架之Lumen之Hello World。
背景:听说Lumen起家是以一个叫av的框架,larvael。以Auth2.0起步,Lumen是精简版本,于是想了解一下。发现居然边TM路由就卡住了,Fuck,不光是我老外也有这个问题,都没有解决,主要是一个Nginx的转写问题,这块在Lumen的文档里写的很垃圾,我都不知这些人是

0评论2017-02-05340

PHP7 内核分析:变量的设计
变量的结构变量的数据结构变量保存在zval的结构体中(与 PHP5 相同,但数据结构做了很大改变)。zval结构体定义在Zend/zend_types.h文件中,结构体如下:typedef struct _zval_struct zval;struct _zval_struct {zend_valuevalue;/* value */union {struct {Z

0评论2017-02-05103

PHP7扩展开发之创建变量
#前言在这篇博文中我们将演示如何在PHP扩展中创建一个变量。示例代码如下:?phpclass demo {}$lng = 2;$str = abc;$arr = array(1,'a' = 'b');$obj = new demo();var_dump($str);var_dump($arr);var_dump($obj);?中间的三行我们将用PHP扩展来实现。#代码基础

0评论2017-01-06145

关于PHP7漏洞情况的通报
近日,国家信息安全漏洞库(CNNVD)收到多个关于“PHP7”漏洞情况的报送。其中编号为CNNVD-201612-760和CNNVD-201612-761的两个漏洞影响PHP7版本,利用难度较大;编号为CNNVD-201612-759的漏洞同时影响PHP7版本和PHP5版本,利用难度较小。目前多个主流内容管

0评论2017-01-0696

PHP7扩展开发之常量定义
前言这次,我们将演示如何在PHP扩展中定义一个常量。要实现的PHP代码如下:?phpdefine(__ARR__, array('2', 'site'=www.bo56.com));define(__SITE__, www.bo56.com, true);define(say\__SITE__, bo56.com);var_dump(__ARR__);var_dump(__site__);var_dump(say

0评论2016-12-23295

[译]将PHP扩展从PHP5升级到NG(PHP7)
许多经常使用的API函数已经更改,例如HashTable API; 这个页面致力于记录尽可能多的实际影响扩展和核心代码的更改。 强烈建议在阅读本指南之前阅读phpng-int中有关PHPNG实现的一般信息。这不是一个涵盖所有可能情况的完整指南。 这是一个在大多数情况下有用的

0评论2016-12-23509

PHP7扩展开发之数组处理
前言这次,我们将演示如何在PHP扩展中如何对数组进行处理。要实现的PHP代码如下:?phpfunction array_concat ($arr, $prefix) {foreach($arr as $key = $val) {if (isset($prefix[$key]) && is_string($val) && is_string($prefix[$key])) {$arr[$key] = $pre

0评论2016-12-23423

更多推荐