2010-11-22 11 views
0

私はXMLDocument_Exceptionをスローするモデルを持っています。私のコントローラーのアクションでは、この例外をスローするtry catchブロックを含める必要がありますが、何らかの理由でそれが捕捉されていません。Zend Frameworkで私自身のモデル例外をキャッチする方法

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がたXMLDocumentを拡張FedoraMETSを拡張します。上記のコードは、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 

は、なぜ私は私のアクションコントローラでこの例外をキャッチないのですか?

答えて

1

は、スタックトレースを確認してください#2:

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

どうやら、例外がビューに、ではないコントローラにスローされています。ビューでtry...catchを使用してください(またはアプローチを変更してください)。

+0

うん、私はそれに気付いたはずですね!ありがとうございました。 – Surfrdan