找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1275|回复: 0
打印 上一主题 下一主题

YII Framework教程之异常处理详解

[复制链接]

2560

主题

2560

帖子

7622

积分

论坛元老

Rank: 8Rank: 8

积分
7622
跳转到指定楼层
楼主
发表于 2018-2-14 05:38:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            本文讲述了YII Framework异常处理。分享给大家供大家参考,具体如下:
异常无处不在,作为程序员,活着就是为了创造这些异常,然后修复这些异常而存在的。YII框架封装了PHP的异常,让异常处理起来更简单。
使用 YII处理错误和异常的配置方法
你可以在入口文件中定义YII_ENABLE_ERROR_HANDLER和YII_ENABLE_EXCEPTION_HANDLER为true.
引发异常的情况
1.触发onError或者onException事件
2.人为抛出异常。例如
throw new ExceptionClass('错误信息');//异常的基类
throw new CHttpException(404,'此页面不存在');//面向最终用户的类
异常的显示视图
当一个错误被转发给组件CErrorHandler的时候,它会选择合适的视图来显示错误。
CErrorHandler会搜索合适的视图来显示错误信息,搜索的顺序如下:
1. WebRoot/themes/ThemeName/views/system: 在当前主题视图下的system目录中。
2. WebRoot/protected/views/system: 在应用的默认视图的system目录中。
3. yii/framework/views: 在Yii提供的标准视图目录中。
使用action来处理捕捉的异常错误.
修改配置文件
/yii_dev/testwebap/protected/config/main.php
    'errorHandler'=>array(
// use 'site/error' action to display errors
      'errorAction'=>'site/error',
    ),
用来指定处理错误的action。例如site controller中的error action
actionError默认代码如下
/**
* This is the action to handle external exceptions.
*/
public function actionError()
{
  if($error=Yii::app()->errorHandler->error)
  {
    if(Yii::app()->request->isAjaxRequest)
      echo $error['message'];
    else
      $this->render('error', $error);
  }
}
在这个动作中,首先从CErrorHandler::error中取得详细的错误信息。如果取得的信息非空,就使用CErrorHandler::error返回的信息来渲染error视图。CErrorHandler::error返回的信息是一个数组,结构如下:
code: HTTP 状态码(比如 403, 500);
type: 错误类型(比如 CHttpException, PHP Error);
message: 错误信息;
file: 发生错误的PHP文件名;
line: 错误所在的行;
trace: 错误的调用栈信息;
source: 发生错误的代码的上下文。
异常日志
一个error级别的错误信息会在错误发生时候被记录。如果这个错误是由PHP warning 或 notice引发的,那么这个消息将会被记录在php这个分类中;如果错误信息是由未捕获的异常所引起的,那么分类将是exception.ExceptionClassName(对于CHttpException来说,它的statusCode也将被追加到分类名中)。开发者可以使用这些记录来监测应用执行时候的错误信息异常处理的方法。
更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。
            
            
您可能感兴趣的文章:
  • yii框架通过控制台命令创建定时任务示例
  • Yii中实现处理前后台登录的新方法
  • 实例讲解如何在PHP的Yii框架中进行错误和异常处理
  • 解读PHP的Yii框架中请求与响应的处理流程
  • Yii2框架使用计划任务的方法
  • Yii安装与使用Excel扩展的方法
  • Yii+upload实现AJAX上传图片的方法
  • YII视图整合kindeditor扩展的方法
  • Yii实现的多级联动下拉菜单
  • Yii+MYSQL锁表防止并发情况下重复数据的方法
  • Yii安装EClientScript插件扩展实现css,js文件代码压缩合并加载功能
  • Yii使用DeleteAll连表删除出现报错问题的解决方法
  • Yii实现Command任务处理的方法详解
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端