PHP DOMDocument 错误处理

标签 php xml exception dom error-handling

在我的应用程序中,我从 url 加载 xml 以解析它。 但有时这个网址可能无效。在这种情况下,我需要处理错误。 我有以下代码:

$xdoc = new DOMDocument();
try{
  $xdoc->load($url); // This line causes Warning: DOMDocument::load(...)
                     // [domdocument.load]: failed to open stream: 
                     // HTTP request failed! HTTP/1.1 404 Not Found in ...
} catch (Exception $e) {
  $xdoc = null;
}

if($xdoc == null){
  // Handle
} else {
  // Proceed
}

我知道我可能做错了,但是处理这种异常的正确方法是什么?我不想在我的页面上看到错误消息。

DOMDocument::load() 的手册说:

If an empty string is passed as the filename or an empty file is named, a warning will be generated. This warning is not generated by libxml and cannot be handled using libxml's error handling functions.

但是没有关于如何处理的信息。

谢谢。

最佳答案

根据我从 documentation 收集到的信息,处理此方法发出的警告很棘手,因为它们不是由 libxml 扩展生成的,因此无法由 libxml_get_last_error() 处理。您可以使用错误抑制运算符并检查 false...

的返回值
if (@$xdoc->load($url) === false)
    // ...handle it

...或注册an error handler which throws an exception on error :

function exception_error_handler($errno, $errstr, $errfile, $errline ) {
    throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}

然后捕获它。

关于PHP DOMDocument 错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1759069/

相关文章:

php - 如何将 php include 插入到 heredoc 变量中?

php - MySql 查询以检索 xml 的元素属性的值

ios - Swift 代码中的 EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)。为什么?

php - 为什么我的异常没有被 catch 捕获?

php - Yii2 命名空间自动加载器找不到复制的文件

php - codeigniter 管理面板自动创建页面

java - 在 Java 中验证 XML NCName

java - com.google.gson.JsonSyntaxException 无法解析的日期

python - 为什么 Python 经常将异常类型和值(exc_info、__exit__ 等)分开?

php - 包含地点,父地点,纬度,经度等的免费数据库