Php 如何在Zend Framework操作中捕获我自己的模型异常
我有一个抛出XMLDocument_异常的模型。在我的控制器操作中,我想包括一个try-catch块,该块可能会抛出此异常,但由于某些原因,它不会被捕获Php 如何在Zend Framework操作中捕获我自己的模型异常,php,zend-framework,exception,frameworks,controller,Php,Zend Framework,Exception,Frameworks,Controller,我有一个抛出XMLDocument_异常的模型。在我的控制器操作中,我想包括一个try-catch块,该块可能会抛出此异常,但由于某些原因,它不会被捕获 public function listissuesAction() { $publicationPid = $this->_request->get('publicationPid'); $this->getFrontController()->throwExceptions(true); t
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,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:
显然,异常被抛出到视图,而不是控制器。在视图中使用
try…catch
(或更改方法)。是的,傻瓜,我应该注意到这一点!谢谢,现在一切都好了。
#2 /Users/dof/Sites/ccymod/trunk/application/views/scripts/browse/listissues.phtml(19): FedoraMETSPublication->getIssues()