<?php
try {
$attrs = $xml->attributes();
$code = $attrs['_Code'];
}
catch (Exception $e)
{
$code = '';
}
?>
得到我:
致命错误:在非对象上调用成员函数attributes() 第6行
为什么我在try-catch包装的代码上抛出错误?
注意: 可以通过使用以下代码来避免此错误。 (问题不在于避免错误,而是为什么它没有被捕获 - 我仍然认为我会分享无错误的代码)
if (is_object($xml) && method_exists($xml,'attributes')) {
$attrs = $xml->attributes();
$code = !empty($attrs['_Code'])?$attrs['_Code']:'';
}
else {
$code = '';
}
答案 0 :(得分:1)
无法捕获PHP致命错误。我不知道你正在做什么的具体细节,但你必须找出一些其他方法来测试$xml->attributes()
是否有用。
此外,吞下每一个错误并且不将其记录在任何地方都是不好的做法,因为当事情开始破坏时你将不知道为什么。
答案 1 :(得分:0)
try
/ catch
仅适用于例外,而非解析错误。您必须进行测试以确保$xml
具有attributes
方法以避免此类错误(可以称为空指针,但不完全相同)。