php exception_uncaught_handler,【原创】解决PHP报错: PHP Fatal error: Uncaught TypeError: Argument 1 passed ...

问题背景:

下面这段代码在PHP5中工作OK,但是升级到PHP7后,报题示错误。

class QDB_Adapter_Mysql extends QDB_Adapter_Abstract

{

public function __construct($dsn, $id)

{

set_exception_handler(array($this, 'exceptionHandler'));

}

public function exceptionHandler(Exception $ex)

{

//......

}

}

问题原因:

自 PHP 7 以来,大多数错误抛出Error异常,如果在用户回调里将 $ex参数的类型明确约束为Exception, PHP 7 中由于异常类型的变化,将会产生问题,所以最好的兼容方案就是:移除 $ex 参数前的类型约束。

解决方案:

//register exceptoin handler

set_exception_handler('handler');

// PHP 5 work only

function handler(Exception $e) { ... }

// PHP 7 work only

function handler(Throwable $e) { ... }

// PHP 5 and 7 compatible.

function handler($e) { ... }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值