YII Framework教程之異常處理詳解
本文講述了YII Framework異常處理。分享給大家供大家參考,具體如下:
異常無處不在,作為程序員,活著就是為了創(chuàng)造這些異常,然后修復(fù)這些異常而存在的。YII框架封裝了PHP的異常,讓異常處理起來更簡單。
使用 YII處理錯誤和異常的配置方法:
你可以在入口文件中定義YII_ENABLE_ERROR_HANDLER和YII_ENABLE_EXCEPTION_HANDLER為true.
引發(fā)異常的情況
1.觸發(fā)onError或者onException事件
2.人為拋出異常。例如
throw new ExceptionClass('錯誤信息');//異常的基類
throw new CHttpException(404,'此頁面不存在');//面向最終用戶的類
異常的顯示視圖
當(dāng)一個(gè)錯誤被轉(zhuǎn)發(fā)給組件CErrorHandler的時(shí)候,它會選擇合適的視圖來顯示錯誤。
CErrorHandler會搜索合適的視圖來顯示錯誤信息,搜索的順序如下:
1. WebRoot/themes/ThemeName/views/system: 在當(dāng)前主題視圖下的system目錄中。
2. WebRoot/protected/views/system: 在應(yīng)用的默認(rèn)視圖的system目錄中。
3. yii/framework/views: 在Yii提供的標(biāo)準(zhǔn)視圖目錄中。
使用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默認(rèn)代碼如下
/**
* 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);
}
}
在這個(gè)動作中,首先從CErrorHandler::error中取得詳細(xì)的錯誤信息。如果取得的信息非空,就使用CErrorHandler::error返回的信息來渲染error視圖。CErrorHandler::error返回的信息是一個(gè)數(shù)組,結(jié)構(gòu)如下:
code: HTTP 狀態(tài)碼(比如 403, 500);
type: 錯誤類型(比如 CHttpException, PHP Error);
message: 錯誤信息;
file: 發(fā)生錯誤的PHP文件名;
line: 錯誤所在的行;
trace: 錯誤的調(diào)用棧信息;
source: 發(fā)生錯誤的代碼的上下文。
異常日志
一個(gè)error級別的錯誤信息會在錯誤發(fā)生時(shí)候被記錄。如果這個(gè)錯誤是由PHP warning 或 notice引發(fā)的,那么這個(gè)消息將會被記錄在php這個(gè)分類中;如果錯誤信息是由未捕獲的異常所引起的,那么分類將是exception.ExceptionClassName(對于CHttpException來說,它的statusCode也將被追加到分類名中)。開發(fā)者可以使用這些記錄來監(jiān)測應(yīng)用執(zhí)行時(shí)候的錯誤信息異常處理的方法。
更多關(guān)于Yii相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Yii框架入門及常用技巧總結(jié)》、《php優(yōu)秀開發(fā)框架總結(jié)》、《smarty模板入門基礎(chǔ)教程》、《php日期與時(shí)間用法總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家基于Yii框架的PHP程序設(shè)計(jì)有所幫助。
- Yii2框架使用計(jì)劃任務(wù)的方法
- yii框架通過控制臺命令創(chuàng)建定時(shí)任務(wù)示例
- 解讀PHP的Yii框架中請求與響應(yīng)的處理流程
- 實(shí)例講解如何在PHP的Yii框架中進(jìn)行錯誤和異常處理
- Yii中實(shí)現(xiàn)處理前后臺登錄的新方法
- Yii使用DeleteAll連表刪除出現(xiàn)報(bào)錯問題的解決方法
- Yii安裝EClientScript插件擴(kuò)展實(shí)現(xiàn)css,js文件代碼壓縮合并加載功能
- Yii+MYSQL鎖表防止并發(fā)情況下重復(fù)數(shù)據(jù)的方法
- Yii實(shí)現(xiàn)的多級聯(lián)動下拉菜單
- YII視圖整合kindeditor擴(kuò)展的方法
- Yii+upload實(shí)現(xiàn)AJAX上傳圖片的方法
- Yii安裝與使用Excel擴(kuò)展的方法
- Yii實(shí)現(xiàn)Command任務(wù)處理的方法詳解
相關(guān)文章
thinkphp5使用phpmail發(fā)送qq郵件的實(shí)現(xiàn)過程
這篇文章主要給大家介紹了thinkphp5使用phpmail發(fā)送qq郵件的實(shí)現(xiàn)過程,文中有詳細(xì)的代碼示例供大家參考,具有一定的參考價(jià)值,感興趣的小伙伴可以自己動手嘗試一下2023-10-10
php守護(hù)進(jìn)程 加linux命令nohup實(shí)現(xiàn)任務(wù)每秒執(zhí)行一次
那么有了這個(gè)命令以后我們php就寫成shell 腳本使用循環(huán)來讓我們腳本一直運(yùn)行下去,不管我們終端窗口是否關(guān)閉都能夠讓我們php 腳本一直運(yùn)行下去。2011-07-07
PHP如何通過AJAX方式實(shí)現(xiàn)登錄功能
PHP是一門很好的語言,可以很方便的開發(fā)web應(yīng)用程序,下面介紹一下Ajax+PHP+MySQL登陸示例,感興趣的小伙伴們可以參考一下2015-11-11
php定義數(shù)組和使用示例(php數(shù)組的定義方法)
這篇文章主要介紹了php定義數(shù)組和使用示例(php數(shù)組的定義方法),需要的朋友可以參考下2014-03-03
在laravel中實(shí)現(xiàn)將查詢的對象轉(zhuǎn)換為多維數(shù)組的函數(shù)
今天小編就為大家分享一篇在laravel中實(shí)現(xiàn)將查詢的對象轉(zhuǎn)換為多維數(shù)組的函數(shù),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10
基于php+MySql實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)實(shí)例
這篇文章主要介紹了基于php+MySql實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)實(shí)例,文中通過圖片功能介紹的非常詳細(xì),文章末尾附帶項(xiàng)目源碼,需要的朋友可以參考下2020-08-08
thinkPHP框架通過Redis實(shí)現(xiàn)增刪改查操作的方法詳解
這篇文章主要介紹了thinkPHP框架通過Redis實(shí)現(xiàn)增刪改查操作的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了thinkPHP框架針對redis數(shù)據(jù)庫的配置、連接及CURD操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-05-05
Yii2實(shí)現(xiàn)增刪改查后留在當(dāng)前頁的方法詳解
yii2.0框架是PHP開發(fā)的一個(gè)比較高效率的框架,集合了作者的大量心血,下面這篇文章主要介紹了Yii2如何實(shí)現(xiàn)增刪改查后仍留在當(dāng)前頁的方法,需要的朋友可以參考借鑒,下面來一起看看吧。2017-01-01

