1.错误处理

发生错误后引发 handleError() 函数处理:public function handleError($code,$message,$file,$line){if($code & error_reporting()){// disable error capturing to avoid recursive errorsrestore_error_handler(); restore_exception_handler();//restore_error_handler,
restore_exception_handler两个函数,如果没有这两个函数的调用,那么在后续的错误处理过程中,
当再次产生异常或是错误时,又会调用CApplication:: handleError ,从而可能造成死循环,
故Yii在此处临时禁止了使用CApplication:: handleError 接管后续的错误和异常(使用php默认的错误处理机制),
这就保证了不会因之产生循环调用。$log="$message ($file:$line)\nStack trace:\n";$trace=debug_backtrace();// skip the first 3 stacks as they do not tell the error positionif(count($trace)>3) {$trace=array_slice($trace,3);}foreach($trace as $i=>$t){if(!isset($t['file'])) {$t['file']='unknown';}if(!isset($t['line'])) {$t['line']=0;}if(!isset($t['function'])) {$t['function']='unknown';}$log.="#$i {$t['file']}({$t['line']}): ";if(isset($t['object']) && is_object($t['object'])) {$log.=get_class($t['object']).'->';}$log.="{$t['function']}()\n";}if(isset($_SERVER['REQUEST_URI'])) {$log.='REQUEST_URI='.$_SERVER['REQUEST_URI'];}Yii::log($log,CLogger::LEVEL_ERROR,'php');try{Yii::import('CErrorEvent',true);$event=new CErrorEvent($this,$code,$message,$file,$line);//此时将产生一个CErrorEvent(并包含$code,$message,$file,$line几项关键参数),传递给CErrorHandler组件进行处理。具体是交给CErrorHandler::handleError处理之。这个流程主要是将错误相关信息进行整理,并以合适的方式进行显示。$this->onError($event);if(!$event->handled){// try an error handlerif(($handler=$this->getErrorHandler())!==null) {$handler->handle($event);}else {$this->displayError($code,$message,$file,$line);}}}catch(Exception $e){$this->displayException($e);}try{$this->end(1);}catch(Exception $e){// use the most primitive way to log error$msg = get_class($e).': '.$e->getMessage().' ('.$e->getFile().':'.$e->getLine().")\n";$msg .= $e->getTraceAsString()."\n";$msg .= "Previous error:\n";$msg .= $log."\n";$msg .= '$_SERVER='.var_export($_SERVER,true);error_log($msg);exit(1);}}}


















2.异常处理













3.使用一个动作来处理错误


33.错误处理(2)相关推荐

  1. SidebySide ID:33错误

    "c:\users\imys\documents\visual studio 2010\Projects\huaqi\Debug\huaqi.exe"的激活上下文生成失败. 找不到 ...

  2. 短信息错误cmpp以及MISC等等

    网上搜集的比我原来的全! 与中国移动代码的对应关系. MI::zzzz SMSC返回状态报告的状态值为EXPIRED MJ:zzzz SMSC返回状态报告的状态值为DELETED MK:zzzz SM ...

  3. IDEA Generate JavaDoc时 控制台报错误: 编码GBK的不可映射字符

    一.生成JavaDoc 为了方便查看功能解释,除了使用Swagger-ui以外,还需要知道非控制器(controller)类的功能,比如Service.Resource等.于是尝试了一下IDEA的生成 ...

  4. OCS Inventory NG使用之在windows 2008 R2平台下安装服务器端(三)

    声明:鉴于本文篇幅比较长,为了不让广大博友产生阅读疲劳,所以进行了分割,如果要全篇阅读文章,请点击文章底部的链接,对此产生的不便,深表抱歉.   (图3.10) <?xml:namespace ...

  5. const指针和指向常量的指针

    先看下面六种写法: 1. const int p;2. const int *p;3. int const* p;4. int * const p;5. const int * const p;6. ...

  6. Swift与Objective-C的对比

    系列(一) WWDC 2014上苹果再次惊世骇俗的推出了新的编程语言Swift 雨燕, 这个消息会前没有半点风声的走漏.消息发布当时,会场一片惊呼,相信全球看直播的码农们当时也感觉脑袋被敲了一记闷棍吧 ...

  7. 单元测试工具 Numega

    1 前言 我在本文中详细介绍了测试工具NuMega Devpartner(以下简称NuMega)的使用方法. NuMega是一个动态测试工具,主要应用于白盒测试.该工具的特点是学习简单.使用方便.功能 ...

  8. UI设计规范-全文篇

    目录 UI设计规范 1 1. 界面规范 1 1.1. 总体原则 1 1.2. 原则详述 2 1.2.1. 用户控制 2 1.2.2. 清楚一致的设计 2 1.3. 细节约定 3 1.3.1. 界面风 ...

  9. 异常:程序包org.apache.http不存在 的问题解析

    异常: Error:(19, 23) 错误: 程序包org.apache.http不存在 Error:(20, 23) 错误: 程序包org.apache.http不存在 Error:(21, 23) ...

  10. BoundsChecker的用法

    BoundsChecker 是一个Run-Time错误检测工具,它主要定位程序在运行时期发生的各种错误.BoundsChecker能检测的错误包括: 1))1.指针操作和内存.资源泄露错误,比如: 内 ...

最新文章

  1. Android 常见异常及解决办法
  2. 【转】系统管理类DOS命令汇总
  3. java 匿名函数 构造_Java匿名内部类与Lambda表达式
  4. 逻辑斯谛回归模型( Logistic Regression,LR) 最大熵模型(Max Entropy,ME)
  5. linux启动过程剖析,分析Linux系统的启动过程
  6. WEB安全基础-PHP+MySQL实践
  7. python程序设计基础试题及答案_智慧职教2020Python程序设计基础题目及答案
  8. 某学校有计算机主机1300台,《计算机应用基础》1300题一级考试练习题
  9. c语言iec 103协议程序,IEC103通信流程详解.doc
  10. 惠普MFP774dn扫描功能
  11. n1进入recovery模式_OPPO N1如何进入recovery模式
  12. java 英语单词拼写训练_java 英文单词拼写纠正框架(Word Checker)
  13. html里有序列表标签怎么表示,HTML——列表标签
  14. 给陈景润之子陈由伟的一封公开信
  15. 安装试用国产系统 ——中标麒麟V7.0
  16. 市场渐冷,交易所拉锯战愈烈,牛熊无阻,我在乌镇等你
  17. 【日语入门】促音的基本规则
  18. ABC281 E - Least Elements
  19. 在中国,做不成电商SaaS?
  20. postgresql数据库命令行授权实操

热门文章

  1. C#获取二维数组的行数和列数及其多维。。。
  2. CEF3研究(四)之javascript集成
  3. 使用ActiveMQ 传输文件 以及使用Jetty搭建内嵌文件服务器
  4. sizeof,真正终结版GCC与VC
  5. DataSetProvider的Option属性
  6. Programming WCF Services中文翻译(3)-契约
  7. BigData | 一文带你搞清楚“数据倾斜”
  8. 浅析那些带着“主角光环“的泰坦尼克号幸存者
  9. css matrix矩阵,矩阵 | matrix() (Transforms) - CSS 中文开发手册 - Break易站
  10. 读书笔记 - 《漫威宇宙》