我遇到了 PHP 的问题,因为它一直在标题中提到异常。它在以下行失败:
$item->getDescription();
我理解错误应该是什么意思($item
为空)。但是,$item 不为空。
场景如下: 这是一个将产品从供应商同步到商店的脚本。为此,我创建了自己的类(SimpleProduct)。这个类有一个 getDescription() 函数。
问题是我收到的数据往往有很多垃圾,比如尚未填写的项目。脚本应该跳过这些项目并继续迭代其余产品。这个致命错误会杀死整个脚本。
我已经尝试过实施安全措施来防止这种情况发生,但它仍然经常发生。这是当前代码(删除了一些片段,因为它们与当前案例无关)。
//This is part of a class that performs the sync
public function syncProduct($item) {
if(empty($item)) { return "Not a product"; }
else { var_dump($item) }
$foo = $item->getDescription();
}
检查 var_dump 结果时,我得到一个填充了一些值的对象。看到它是正确的类型(SimpleProduct)并且它不是空/空,我会怀疑这个错误停止发生,但它仍然存在。
另请注意,在弹出此产品之前,已经发生了几次产品同步而没有任何错误,因此我知道代码是有效的。不知何故,这个特定的案例滑过了我的空检查。
我的空检查有问题吗?当有问题的对象确实存在时,如何抛出非对象的错误?