簡體   English   中英

無法捕獲Zend Framework異常

[英]Cannot catch Zend Framework exception

我有一個基於基本框架的Zend Framework應用程序。 因此,存在一個public/index.php文件,並且在其中啟動了該應用程序:

Zend\Mvc\Application::init(require 'config/application.config.php')->run();

我的問題是,那里的某個地方拋出了PDOException,我無法捕獲它。 我嘗試將run語句包裝在try / catch塊中,但沒有成功:

try {
    Zend\Mvc\Application::init(require 'config/application.config.php')->run();
} catch (\Exception $e) {
    die("Caught!");
}catch (\PDOException $e) {
    die("Caught!");
}

但這並沒有捕獲異常,它仍顯示通用的“發生錯誤”頁面。 實際上,我也嘗試過拋出通用異常,同樣也無法捕獲它們。 我也嘗試過設置set_exception_handler函數,但是還是沒有運氣。

任何想法如何解決此問題?

好的,我發現了問題所在。 ZF2有其自己的非標准方式來處理異常。 在ZF中,異常不僅是異常,它們是“ MvcEvents”,它們不會被庸俗的try / catch塊捕獲,而是需要通過應用程序對象,“事件管理器”,通過“ EVENT_DISPATCH_ERROR”常量的“ attach”方法(我猜他們可以稱其為“ EXCEPTION”,但這太容易了)。

所以解決方案是:

function zendFrameworkErrorHandler(Zend\Mvc\MvcEvent $event) {
    echo "Got exception: " . (string)$event->getParam('exception');
}

$application = Zend\Mvc\Application::init(require 'config/application.config.php');
$application->getEventManager()->attach(Zend\Mvc\MvcEvent::EVENT_DISPATCH_ERROR, 'zendFrameworkErrorHandler');
$application->run();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM