在Cakephp 3中捕获致命错误

时间:2017-10-30 08:26:50

标签: php cakephp

当传递到imagecreatefromjpeg的无效数据时,我正试图捕获错误。 Cake php显示错误页面Fatal Error Cake\Error\FatalErrorException,所以这段代码应该可以工作,但不是:

            try {
                $src_img = imagecreatefromjpeg($image);
            } catch (\Cake\Error\FatalErrorException $e) {
                echo 'Caught exception: ',  $e->getMessage(), "\n";
            }

我也尝试使用\Exception\Cake\Core\Exception\Exception\ErrorException,但没有成功。

1 个答案:

答案 0 :(得分:1)

imagecreatefromjpeg()通常不应该导致致命错误,但只有警告,您可能需要进一步调查。

无论如何,通过try...catch捕获致命错误只能从PHP 7开始,其中大多数已被更改为异常。在这种情况下,您必须抓住\Error\Throwable。但是仍然存在无法捕获的致命错误,例如require()失败或超出内存时。

\Cake\Error\FatalErrorException是在常规错误处理程序内部创建的,其中将处理(未捕获的)致命错误,即不会抛出异常,因此无法捕获。

另见