错误未被 try catch 块拦截

Bat*_*Man 1 php error-handling runtime-error exception laravel

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:
Run Code Online (Sandbox Code Playgroud)

我收到以下错误,该错误未在 try catch 块中拦截。

use \Exception as Exception;

try {
   $this->recursiveCall();
} catch (ErrorException $ex) {
    exit;
}catch (Exception $ex) {
    exit;
}
Run Code Online (Sandbox Code Playgroud)

如果在 php.ini 中提高到memory_limit = 512M它工作正常,但困扰我的是错误没有得到处理。

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

有什么想法如何处理这个问题吗?10倍

pr1*_*nc3 5

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

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

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