php - 从Symfony2捕获ContextErrorException

标签 php symfony error-handling

我正在读取PHP中的XML文件,并希望在try catch块中执行此操作,以便我可以处理异常(损坏的文件)。

所以我的代码看起来像这样:

try{
    $xml = simplexml_load_string($file);
} catch (Exception $ex) {
    //do stuff
}

但是我没有得到这个异常消息,而不是捕获:
ContextErrorException: Warning: simplexml_load_string(): Entity: line 4284: parser error : Premature end of data in tag Data line 2201

我什至不知道这是否是一个真正的异常,因为在那之后就是Warning:,这是警告而不是异常吗?如果是异常(exception),为什么我不能捕获它?

最佳答案

我自己通过更改错误处理程序来修复它:

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

我不确定,但是我猜我收到的异常确实是一个警告,因此无法捕获。

关于php - 从Symfony2捕获ContextErrorException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24798847/

相关文章:

symfony - sonata_type_collection 表单类型的自定义查询或特定 getter 方法

Java:通用类型转换中(缺乏)错误

error-handling - 有人可以向我解释gRPC StreamObserver.onError的正确用法是什么?

php - laravel 4.2 - 不使用迁移的数据库

PHP 发布到 url,然后从 url 生成页面

php - 我不能在 Twig_Extension 类中将内部函数与 Twig_SimpleFilter 一起使用

php - Zend Search MultiTerm 查询没有命中? (应该有3个)

jquery - Web API和jQuery ajax没有收到正确的错误

php - 使用 php 打开 OTF 字体 - 包括希腊字符

javascript - 重置按钮并启动倒数计时器