php - 构造函数中无限抛出

标签 php

像这样的 php 脚本会发生什么?

class FooException extends Exception
{

    public function __construct() {
        throw new FooException;
    }
}

可能与

相同
while (TRUE) {
    new Exception();
}

当超出执行时间时,它只是超时,或者因某些 fatal error 而失败?

最佳答案

在第一种情况下,什么也不会发生,因为您从未构造异常。

在第二种情况下,不会抛出异常,因此您只会得到一个普通的无限循环。

但是,如果您通过在末尾添加此行来修改第一个示例:

throw new FooException();

它会导致无限循环,最终耗尽所有内存:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 44 bytes)

关于php - 构造函数中无限抛出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2837053/

相关文章:

PHP/Composer 不能重新声明

php - 如何在 html + php(codeIgniter) 中渲染一棵树

php - 通过 php 输入处理上传时减少 PHP 中的内存消耗

php - 如何从php获取变量到数组?

远程文件包含的 PHP 替代方案

javascript - AJAX不会提交数据

php - 输出 mysql laravel 集合损坏

php - 在 WooCommerce 单一产品页面中添加 OpenGraph 标签

php - Yii - getActiveFormWidget() 在核心中返回错误类型?

php - 用PHPUnit区分NULL和FALSE