在致命错误时使用记忆使用情况,我应该尝试抓住每一行



关于记忆使用和对象破坏的PHP致命错误到底会发生什么?内存会自动释放致命错误吗?

我真的想了解有关该主题的更多信息,并且在PHP手册中找不到。

我是否应该担心尝试{}捕获{}我的功能,以便我可以在捕获{}中破坏我的对象,或者它会自动发生?它是瞬间的吗?

添加示例:

$objectOne = new stdClass();
$objectOne->statement = "Hello";
$objectTwo = new stdClass();
randomFunctionThatShouldCauseAnError();
$objectTwo->statement = "Error before this";

在上面的轴样本中,$ objectOne是否会在randomFunctionThatShouldCauseAnError引起的错误上自动释放?或者我应该做以下操作:

$objectOne = new stdClass();
$objectOne->statement = "Hello";
$objectTwo = new stdClass();
try{
    randomFunctionThatShouldCauseAnError();
}catch (Error $e){
    $objectOne = null;
    $objectTwo = null;
}
$objectTwo->statement = "Error before this";

对不起问题的垃圾邮件,但是我已经为此挣扎了一段时间,我想知道在代码中发生致命错误时如何处理记忆。

非常感谢!

我是否应该担心尝试{}捕获{}我的功能,以便我可以在捕获{}中破坏我的对象,或者它会自动发生?它是瞬间的吗?

如果要保持代码运行,则应捕获异常,否则您可以轻松地从程序中产生意外的行为。如果您没有捕获异常,则可以抛出致命错误并停止执行代码,因此,操作系统将从内存中倾倒任何内容。

您也应该注意不要暴露敏感信息(即,PDOException可以将您的SQL密码输入用户的屏幕(。尝试以下操作:

<?php
class Test {
    public $param;
    public function canThrowAnError() {
        $this->param = "Changed right before the exception";
        if (true) {
            throw new Exception("Message", 10023);
        }
    }
}

,然后

$test = new Test();
$test->param = "Yay, it works still...";
try {
    $test->canThrowAnError();
} catch (Exception $e) {
    // Do something. Log, inform the user..
}
echo $test-param;

如果您捕获异常,则代码将继续进行,并且一切都将在例外情况下尽其所能。以下将导致:

"Changed right before the exception"

您应该相应地对待错误,以使您没有意外的行为。

相关内容

最新更新