是否出于技术原因不使用try catch来检索可能未设置的属性

问题描述 投票:-1回答:2

抛出错误而不是检查是否设置了变量会造成很大的性能损失。

例如。尝试一下]]

public function getProperty(): int
{
    try {
        return $this->getDetail('some-detail');
    } catch (Exception $e) {
        return 0;
    }
}

或带有isset

public function getProperty(): int
{    
    return isset($this->getDetail('some-detail')) ? $this->getDetail('some-detail') ? 0;
    // or even $this->getDetail('some-detail') ?? 0; in php7
}

抛出错误而不是检查是否设置了变量会造成很大的性能损失。代码如下。使用try catch公共函数getProperty():int {try {...

php
2个回答
1
投票

这两个选项实际上都不会以预期的方式工作(我假设是在未正确设置值的情况下发送默认值)。


-1
投票

如果程序的逻辑旨在确保该变量必须存在,并且没有该变量,则程序无法进一步执行,因此抛出异常而不是检查变量是否存在是有意义的。或者,高于调用堆栈的级别,必须返回异常,以便事件能够正确处理。例如,如果我们想通知用户有关问题。无论如何,这都是架构问题。

© www.soinside.com 2019 - 2024. All rights reserved.