当前位置: 首页 > 工具软件 > QDB > 使用案例 >

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

汪博达
2023-12-01

问题背景:

下面这段代码在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) { ... }

 类似资料: