获取对象属性,我应该抛出异常吗?

时间:2012-05-28 16:11:02

标签: php exception-handling

一旦我看到有人使用以下代码进行__get方法,它看起来很优雅,所以我复制了。

public function __get($param)
{
    if (!isset($this->params[$param])) {
        throw new Exception("Property doesn't exist");
    }
    return $this->params[$param];
}

但是现在根据属性是否存在执行简单操作来处理异常似乎太多了。 在这种情况下,做什么更好。返回NULL然后检查足够吗?

2 个答案:

答案 0 :(得分:0)

我会说返回NULL并检查就足够了,尽管它取决于你的应用程序的作用。

如果您的类在运行时创建属性,那么抛出异常可能是好的,但如果编译时存在所有属性,则NULL最好。

答案 1 :(得分:0)

在php中,与其他语言不同,这不是特殊情况。我同意你的看法,除非有特殊情况,否则例外情况太过戏剧性。

我倾向于模仿php中正常的预期行为,即返回null值,trigger返回级别E_NOTICEE_USER_NOTICE的错误。当您尝试读取未定义的属性,数组indice或变量时,这是正常行为。

btw-你可能也对实现魔术__isset方法

感兴趣