問題描述
我注意到 Zend 提供的 Skeleton Application 不能處理 error 500
.我知道在 ZF1 中有一個(gè) ErrorController
來處理這個(gè)問題.我在網(wǎng)上做了一些研究,但沒有找到明確的解決方案.
I noticed that the Skeleton Application that Zend provides does not handle error 500
. I know that in ZF1 there was an ErrorController
that took care of that. I have done some research online, but did not find a clear cut solution for this.
那么在 ZF2 中處理錯(cuò)誤的最佳方法是什么?是基于每個(gè)模塊還是某些全局異常/錯(cuò)誤處理程序?
So what is the best way for error handling in ZF2. Would it be on per module basis or some global exception/error handler?
我知道另一種解決方案是將 ini_set('display_errors', true);
添加到我的 index.php
中,但我不太喜歡那個(gè)解決方案.框架似乎應(yīng)該提供一些處理錯(cuò)誤的方法.
I know that another solution would be to add ini_set('display_errors', true);
to my index.php
, but I don't really like that solution. It seems that the framework should provide some way for handling errors.
推薦答案
您可以在捕獲異常后以任何方式處理異常,例如以下示例,其中全局捕獲異常...:
You can handle the exceptions in anyway you want after catching it as the following example in which you are catching the exception globally...:
在你的Module.php
中的onBootstrap
方法中,你可以附加一個(gè)在事件發(fā)生時(shí)執(zhí)行的函數(shù),下面附加一個(gè)在發(fā)生錯(cuò)誤時(shí)執(zhí)行的函數(shù)(異常)引發(fā):
In the onBootstrap
method in your Module.php
you can attach a function to execute when an event occurs, the following attach a function to be executed when an error (exception) is raised:
public function onBootstrap(MvcEvent $e)
{
$application = $e->getApplication();
$em = $application->getEventManager();
//handle the dispatch error (exception)
$em->attach(endMvcMvcEvent::EVENT_DISPATCH_ERROR, array($this, 'handleError'));
//handle the view render error (exception)
$em->attach(endMvcMvcEvent::EVENT_RENDER_ERROR, array($this, 'handleError'));
}
然后定義函數(shù)以任何你想要的方式處理錯(cuò)誤,下面是一個(gè)例子:
and then define the function to handle the error in any way you want, the following is an example:
public function handleError(MvcEvent $e)
{
//get the exception
$exception = $e->getParam('exception');
//...handle the exception... maybe log it and redirect to another page,
//or send an email that an exception occurred...
}
這篇關(guān)于Zend 框架 2 推薦的錯(cuò)誤處理方式的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,也希望大家多多支持html5模板網(wǎng)!