首页 > 语言 > 关键词 > framework最新资讯 > 正文

Zend Framework 入门——错误处理

2008-07-09 09:19 · 稿源:互联网

使用 Zend Framework 的 MVC 结构,如果不做特殊的处理,所有的异常都会被前端控制器捕获,并累积起来。

Zend Framework 提供了若干种方法来处理异常。这里介绍最简单的一种。

在第一部分《快速上手》中,我们已经有了一个很简单的错误处理机制,即通过 applicatoin/controllers/ErrorController.php 以及其中定义的 errorAction 方法来处理异常。不过,只是给出了一个很简陋的报错信息。现在,我们把它再完善一下,达到两个基本要求:

  1. 用户请求了不存在的控制器或动作(404 错误),在用户的浏览器中给出报错信息;
  2. 其他的系统错误,则在日志文件中记录下来。

1. 创建日志

创建一个与 application 平行的文件夹,命名为 logs。

编辑 html/index.php 文件,加入下面的代码:

require_once 'Zend/Log.php';
require_once 'Zend/Log/Writer/Stream.php';
$log = new Zend_Log(new Zend_Log_Writer_Stream($rootPath . '/logs/errors.log', 'a+'));
Zend_Registry::set('error_log', $log);

注意:Web 服务器应具有对 logs 文件夹的读写权限。

2. 完善错误处理代码

编辑 application/controllers/ErrorController.php 文件,新的 errrorAction 方法为:

public function errorAction()
{
$log = Zend_Registry::get('error_log');
$content = null;
$errors = $this->_getParam ('error_handler') ;
switch ($errors->type) {
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER :
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION :
// 404 error -- controller or action not found
$this->getResponse ()->setRawHeader ( 'HTTP/1.1 404 Not Found' ) ;
// ... get some output to display...
$content = "error_page_not_found"$$
break ;
default :
// application error; display error page, but don't change
// status code
$content = "error_unexpected"$$
// ...

// Log the exception
$exception = $errors->exception;

$log->debug($exception->getMessage() .
PHP_EOL . $exception->getTraceAsString());
break ;
}

// Clear previous content
$this->getResponse()->clearBody();
$this->view->content = $content;
}

在 languages/zh_cn.php 中加入错误信息的中文条目(如果你不需要支持多国语言,那么可以忽略这些):

'error_page_not_found' => "<h1>404 错误:页面不存在!</h1>" . PHP_EOL .
'<p>对不起,您所要求的页面不存在。</p>',
'error_unexpected' => '<h1>错误!</h1>' . PHP_EOL .
'<p>对不起,系统无法响应您的请求。请稍后再试。</p>',

最后,略微修改一下 application/views/error/error.phtml 文件:

其中的错误显示代码为:

<?php echo $this->translate($this->content); ?>

注意:如果你需要记录所有的异常和错误,包括各种警告,可以参考这里。

相关文章

Zend Framework 入门——快速上手

Zend Framework 入门——多国语言支持

Zend Framework 入门——错误处理

Zend Framework 入门——页面布局

  • 相关推荐
  • 大家在看
  • 快手小店商品类目错误是什么意思

    快手小店中很多朋友会遇到上传商品的时候显示商品类目错误,一些人还不明白这个到底是什么意思,下面就来为大家详细大家解释一下。

  • 《Valorant》特战英豪提示错误代码43解决方法

    《Valorant》特战英豪是拳头旗下的 FPS 新游,游戏现在已经上线公测,许多玩家在下载游戏后打开的时候遇到了提示错误代码 43 的问题,接下来为大家带来解决的方法。

  • 无畏契约Valorant登录失败各类错误代码解决办法

    无畏契约Valorant很多玩家都选择外服来玩,必然会遇到很多登录问题,特别是会出现各种错误代码,那么遇到了这些错误代码应该怎么解决呢?下面就来为大家详细的介绍一下。

  • 魅族回应黄章退出股东行列:天眼查信息错误 公司没有任何股权变动

    6月26日消息,有媒体报道称魅族科技创始人黄章退出股东行列。据悉,天眼查信息显示魅族创始人黄章退出珠海市魅族科技有限公司股东之列,但在珠海工商查询,最新核准日期为2019年04月30日,黄章

  • 无畏契约Valorant港服连接错误请重启客户端详细解决办法

    无畏契约Valorant在港台服运行的时候进行的会遇到无法连接请重启客户端的问题,要你尝试重新连接线路,那么遇到这样的情况应该怎么办呢?下面就来为大家分享一下解决的办法。

  • 美瑞时(MRISSTIME)发展历程

    美瑞时(MRISSTIME)是世界著名制表品牌之一,隶属于瑞士瑞时集团,瑞士瑞时集团创立于1978年,总部位于洛桑。集团旗下围绕世界名品钟表收藏及高雅格调文化生活方式交流的全球瑞时会俱乐部100余家,服务于全球近500万VIP客户。自19世纪中叶,Ammann家族开始从事钟表制造及收藏,拥有独立的制表企业及顶级腕表收藏艺术廊、钟表博物馆。Ammann家族所坚持的理念,为品牌开创独树一帜的视野,并留下经典隽永的传世作品。直到今天,美瑞时(MRISSTIM

  • 除域名外,谷歌Chrome 85将隐藏详细的URL地址

    谷歌正加紧实施新的计划,以在Chrome中隐藏除域名以外的所有URL地址。据外媒报道,Chrome的Dev和Canary 通道(V85)中出现了一些新的特性标志,它们修改了地址栏中网址的外观和行为。

  • realme新机摄像头不凸起:CMO确认已取消

    6月3日消息,之前网上曝光了一款realme新机。如图所示,这款realme手机的摄像头居中排布,背部中央位置是realme的Logo,黑色与realme黄搭配的设计提高了整机的辨识度,而且摄像头没有凸起,在

  • Beyond Meat的人造肉产品将在盒马鲜生销售

    百胜中国不久前宣布在中国大陆地区推出由人造肉生产商Beyond Meat的产品作为材料的“别样汉堡”(Beyond Burger)。如今有消息称,Beyond Meat的人造肉产品即将在中国大陆销售。据路透社消息,Beyond Meat打算通过阿里巴巴的盒马鲜生在中国出售它的植物汉堡肉饼。销售将从本周末开始在上海的50家盒马鲜生门店进行,并计划在9月进一步扩展到在北京和杭州的48家门店。Beyond Meat是洛杉矶的一家100%

  • iGame《守望先锋》今晚开战:看比赛就能抢爆品显卡

    凭借优秀的操作角色设计、竞技性,《守望先锋》一直都是全球电竞比赛中观赏度、关注度非常高的项目,也催生了许多优秀的电竞选手、俱乐部战队。现在就有一次竞赛的《守望先锋》比赛等你来观,还

  • 苹果新动作:Chrome插件可以移植到Safari浏览器了

    谷歌浏览器Chrome凭借急速的内核、简洁的界面以及与谷歌账号的深度融合,吸引了大批忠实用户。不过,Chrome最拿手的当属其Chrome Web Store,内含数不胜数的轻量级扩展程序,可以将Chrome浏览器

  • 继Edge之后 谷歌将减少Chrome在Win10上的内存占用

    对于一款市占比超过60%份额的浏览器来说,谷歌仍然在不遗余力的优化Chrome,这确实是个好消息。据外媒报道称,Chrome程序员Bruce Dawson也在其公司的浏览器中添加了一个补丁,从而让Chrome可以

  • 共奏音乐:谷歌推Chrome实验应用Shared Piano

    据外媒报道,谷歌推出了一项名为Shared Piano(共享钢琴)的Chrome新实验,它可以让多人同时弹奏一架数码钢琴。这些音调将被记录下来并以彩色列的形式呈现出来。谷歌希望能实现一个人演奏歌曲的一部分另一个人可以演奏另一部分--或如果一位演奏者有一个“房间”的演奏者,每个人都可以为最终的杰作做出贡献。

  • 安卓版Chrome新功能来了:支持图片编辑

    6月25日消息,据XDA报道,谷歌在Android版Chrome上加入了图片编辑功能。XDA指出,Chrome内置了截图编辑器,用户截屏后可以在Chrome内完成编辑、分享等操作。据悉,谷歌已经将这项功能加

  • 国潮+科技!LUCI immers带你领略沉浸式电竞新体验

    6 月 20 日,由鼓楼区科学技术局主办的“ 2020 南京创新周中华门潮科技大赛-全民电竞互动赛”在南京鼓楼区水木秦淮文化艺术街区如期开赛。LUCI此次首次来到南京城,并亮相活动现场,通过旗下可穿戴设备——LUCI immers头戴显示器,为现场观众带来身临其境的“沉浸式”科技体验。 目前我国已成为全球电竞产业发展最快、最受关注的地区之一,并成为全球首个开展电竞主客场的地区。随着电竞游戏的全民化,火爆程度仍然维持在较高水平

  • Chome OS不再拉跨:将能直接运行Windows应用程序

    除了Windows、macOS、Linux发行版,笔记本市场谷歌的Chrome OS实际上也是不容小觑的力量。在北美教育市场,Chromebook的销量甚至常年保持领先。这些年,谷歌对Chrome OS的投入也不少,并在纯w

  • Chrome用户现可利用安全检查工具扫描出不必要应用

    谷歌正在添加Chrome Cleanup工具,该工具在Chrome设置中已经可用,用户可以通过“安全检查(Safety check)”来扫描并删除电脑上的不需要的应用软件。首先,谷歌引入了为Chrome浏览器打造的Software Removal工具(之后将其重命名为Chrome Cleanup),其以独立的程序身份供用户下载并对在Chrome浏览器中的不必要应用(Potentially Unwanted Programs)进行扫描和修复。Chrome Cleanup目前已被集成到Chrome设置和Sandbox引擎及

  • OKEx早报:BitMEX将推企业服务,香港部分售货机开启Ghost支付

    OKEx早报将在每日早间为您带来最新的行情,以及相关行业动态。帮助投资人在最短的时间内了解夜间的动态消息,更好的握把每日行情。行情速递6月29日讯,昨天BTC终结了自24日开始的连续下跌收涨,涨幅0.31%。通过OKEx平台交易数据可以看出,早间行情较为平淡,BTC开盘报9154.27美元。开盘后一路震荡下行。6:15跌至早间低点9073.16美元。随后开始震荡上行,截止发稿BTC报9113.84美元。图片来源:OKEx平台BTC/USD交易数据据OKEx交易大

  • 魅族发布Flyme用户习惯大数据:24小时都在干啥?

    6月25日晚,魅族发布了Flyme用户习惯大数据,看看煤油24小时都在干嘛呢。该数据为近30天的每日平均值。数据显示,12%的Flyme用户会在1:00-6:00为自己的手机清理加速,15%的Flyme用户会在7:00-

  • Android 11 Beta 1推送:新功能神似魅族Flyme小窗模式

    6月11日消息,谷歌今日凌晨正式推送了Android 11 Beta 1。新增可悬浮聊天气泡,交互也更智能。据悉,谷歌在Android 11中系统新增了悬浮聊天气泡,其顶部通知栏提供了对话通知选项,通知到来时

  • 参与评论
文明上网理性发言,请遵守新闻评论服务协议