尝试捕获块未拦截错误

时间:2018-11-08 13:05:20

标签: php laravel exception error-handling runtime-error

PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted
(tried to allocate 32768 bytes) in
/vendor/symfony/debug/Exception/FatalErrorException.php on line 1  PHP Stack trace:

我遇到了以下错误,但在try catch块中没有拦截到。

use \Exception as Exception;

try {
   $this->recursiveCall();
} catch (ErrorException $ex) {
    exit;
}catch (Exception $ex) {
    exit;
}

如果在php.ini中提高到memory_limit = 512M可以正常工作,但令我困扰的是未处理错误。

我读到您可以编写自己的php错误回调,但是恐怕Laravel错误处理可能取决于此。

任何想法如何处理该问题? 10x

1 个答案:

答案 0 :(得分:4)

捕获对于致命错误不起作用。您可以对异常使用try-catch,但是致命错误实际上会“破坏”您的程序,您不能简单地捕获它们,必须解决它们。并不是说异常警告不应该解决,但它们并不像致命错误那么重要。

我看到的解决方案是优化查询(也许增加限制可能会有所帮助),或者按照您的建议增加内存大小。

此错误通常是由于“数据处理过多”所致,因此您可以缩小数据范围以使脚本运行得更快,或者增加限制。