如何实现错误处理

时间:2011-12-20 02:50:47

标签: php error-handling

我在以下行的PHP代码中遇到此问题:

if (!is_null($sxml->children('http://a9.com/-/spec/opensearchrss/1.0/')))

错误是:

Fatal error: Call to a member function children() 

我知道错误的发生是因为没有孩子。

我想做的是确保不会触发错误。我尝试使用is_null和is_object检查子项是否存在,但仍然触发了错误。

我只需要隐藏错误信息,因为我不知道孩子什么时候出现。

我希望我有道理。

由于

3 个答案:

答案 0 :(得分:1)

  

我知道错误的发生是因为没有孩子。

此声明错误。该错误与没有孩子的事实无关。 $sxml中包含的对象没有名为children的方法,因此调用将始终导致致命错误。

它可能是一个财产;通过向您的代码添加print_r($sxml->children);调用来测试此内容。

除此之外,诸如children('http://a9.com/-/spec/opensearchrss/1.0/')之类的调用根本没有意义:对于检索特定类型的所有子节点的函数,您将传递有效的XPath选择器或元素。但是,即使该函数存在,您传递的URL也不会如此,它很可能会失败。 - 显然您可以传递URL以通过命名空间进行选择。

答案 1 :(得分:0)

使用count()测试节点是否有子节点。

if($sxml->children().count()!=0) 
 {
  }

答案 2 :(得分:0)

错误关于您收到错误的原因。

您收到此错误是因为$sxml 不是SimpleXMLElement 。请显示创建$sxml的代码,因为这是您的问题所在。

如果SimpleXMLElement没有子节点,children()将返回一个空数组。没有致命的错误。