繁体   English   中英

如何在Zend Framework Action中捕获我自己的模型异常

[英]How to catch my own Model Exceptions in a Zend Framework Action

我有一个抛出XMLDocument_Exception的模型。 在我的控制器操作中,我想包含一个try catch块,该块可能会引发此异常,但是由于某种原因它没有被捕获。

public function listissuesAction() {
    $publicationPid  = $this->_request->get('publicationPid');
    $this->getFrontController()->throwExceptions(true);
    try {
        $fedoraPublication = new FedoraMETSPublication($publicationPid);
    } catch (XMLDocument_Exception $e) {
        return $this->_forward('content/unavailable');
    }
}

并且该模型将引发异常,如下所示:

if ($mets) {
    $this->loadXML($mets);
} else {
    throw new XMLDocument_Exception('Failed to load METS Document from SOAP Server');
}   

FedoraMETSPublication扩展了FedoraMETS,后者扩展了XMLDocument。 上面的代码在FedoraMETS的构造函数中。

我看到以下错误:

Fatal error:  Uncaught exception 'XMLDocument_Exception' with message 'Failed to load METS Document from SOAP Server' in    2 /Users/dof/Sites/ccymod/trunk/application/models/Fedora/METS.php:21
Stack trace:
#0 /Users/dof/Sites/ccymod/trunk/application/models/Fedora/METS/Issue.php(16): FedoraMETS->__construct('llgc-id:1183037')
#1 /Users/dof/Sites/ccymod/trunk/application/models/Fedora/METS/Publication.php(44): FedoraMETSIssue->__construct('llgc-id:1183037')
#2 /Users/dof/Sites/ccymod/trunk/application/views/scripts/browse/listissues.phtml(19): FedoraMETSPublication->getIssues()
#3 /Users/dof/Sites/ccymod/trunk/lib/Zend/View.php(108): include('/Users/dof/Site...')
#4 /Users/dof/Sites/ccymod/trunk/lib/Zend/View/Abstract.php(831): Zend_View->_run('/Users/dof/Site...')
#5 /Users/dof/Sites/ccymod/trunk/lib/Zend/Controller/Action/Helper/ViewRenderer.php(903): Zend_View_Abstract->render('browse/listissu...')
#6 /Users/dof/Sites/ccymod/trunk/lib/Zend/Controller/Action/Helper/ViewRenderer.php(924): Zend_Controller_Action_Helper_ViewRend in /Users/dof/Sites/ccymod/trunk/application/models/Fedora/METS.php on line 21

为什么我的动作控制器中没有捕获此异常?

检查堆栈跟踪,#2:

#2 /Users/dof/Sites/ccymod/trunk/application/views/scripts/browse/listissues.phtml(19): FedoraMETSPublication->getIssues()

显然,异常是抛出给视图而不是控制器。 在视图中使用try...catch (或更改您的方法)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM