Zend 框架 2 推荐的错误处理方式

2023-05-30php开发问题
7

本文介绍了Zend 框架 2 推荐的错误处理方式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我注意到 Zend 提供的 Skeleton Application 不能处理 error 500.我知道在 ZF1 中有一个 ErrorController 来处理这个问题.我在网上做了一些研究,但没有找到明确的解决方案.

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 中处理错误的最佳方法是什么?是基于每个模块还是某些全局异常/错误处理程序?

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 中,但我不太喜欢那个解决方案.框架似乎应该提供一些处理错误的方法.

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方法中,你可以附加一个在事件发生时执行的函数,下面附加一个在发生错误时执行的函数(异常)引发:

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'));
}

然后定义函数以任何你想要的方式处理错误,下面是一个例子:

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...
}

这篇关于Zend 框架 2 推荐的错误处理方式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

PHP实现DeepL翻译API调用
DeepL的翻译效果还是很强大的,如果我们要用php实现DeepL翻译调用,该怎么办呢?以下是代码示例,希望能够帮到需要的朋友。 在这里需要注意,这个DeepL的账户和api申请比较难,不支持中国大陆申请,需要拥有香港或者海外信用卡才行,没账号的话,目前某宝可以...
2025-08-20 php开发问题
168

PHP通过phpspreadsheet导入Excel日期数据处理方法
PHP通过phpspreadsheet导入Excel日期,导入系统后,全部变为了4开头的几位数字,这是为什么呢?原因很简单,将Excel的时间设置问文本,我们就能看到该日期本来的数值,上图对应的数值为: 要怎么解决呢?进行数据转换就行,这里可以封装方法,或者用第三方的...
2024-10-23 php开发问题
287

mediatemple - 无法使用 codeigniter 发送电子邮件
mediatemple - can#39;t send email using codeigniter(mediatemple - 无法使用 codeigniter 发送电子邮件)...
2024-08-23 php开发问题
11

Laravel Gmail 配置错误
Laravel Gmail Configuration Error(Laravel Gmail 配置错误)...
2024-08-23 php开发问题
16

将 PHPMailer 用于 SMTP 的问题
Problem with using PHPMailer for SMTP(将 PHPMailer 用于 SMTP 的问题)...
2024-08-23 php开发问题
4

关于如何在 GoDaddy 服务器中使用 PHPMailer 设置 SMTP 的问题
Issue on how to setup SMTP using PHPMailer in GoDaddy server(关于如何在 GoDaddy 服务器中使用 PHPMailer 设置 SMTP 的问题)...
2024-08-23 php开发问题
17