1

我尝试使用“set_exception_handler”函数来捕获我的 ActionController 异常。

在任何视图(例如 index.phtml)中,此代码都可以正常工作,视图显示 Helloooo。

    <?php 
    namespace App;
    echo $this->doctype();

    class Fun {
        static function exception_handler(\Exception $ex){
            echo "Heloooo";
        }
        function method(){
            set_exception_handler('App\Fun::exception_handler');
            throw new \Exception('One Exception');
        }
    }
    $f = new Fun();
    $f->method();

我不明白,因为 ActionController.php 中的相同代码 set_exception_handler() 没有捕获异常。在这种情况下,视图显示带有“一个异常”消息的 zend 异常模板。

顺便说一句,异常堆栈没有显示任何警告消息,那么我假设 set_exception_handler() 参数很好。

    namespace App\Controller;
    use Zend\....... //All namespaces used

    class Fun {
        static function exception_handler(\Exception $ex){
            echo "Helloooo";
        }
        function method(){
            set_exception_handler('App\Controller\Fun::exception_handler');
            throw new \Exception('One Exception');
        }
    }
    $f = new Fun();
    $f->method();

    class MainController extends AbstractActionController {
        //The Controller Code (in this test it doesn't execute).
    }

我认为 Zend Framework 使用任何技术来捕获其他级别的控制器异常。请问有人有什么想法吗?

4

1 回答 1

0

我必须更正我以前的帖子。这似乎是ZF的一个已知错误。看看这个:

http://grokbase.com/t/php/php-bugs/128zn2emcx/php-bug-bug-62985-new-set-exception-handler-doesnt-work-from-command-line

于 2012-11-02T13:04:41.013 回答