程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> Thinkphp怎麼實現異常錯誤處理?,thinkphp實現錯誤

Thinkphp怎麼實現異常錯誤處理?,thinkphp實現錯誤

編輯:關於PHP編程

Thinkphp怎麼實現異常錯誤處理?,thinkphp實現錯誤


解決方法:找Thinkphp3.2.3手冊,內容如下!

和PHP默認的異常處理不同,ThinkPHP拋出的不是單純的錯誤信息,而是一個人性化的錯誤頁面,如下圖所示:

錯誤頁面

只有在調試模式下面才能顯示具體的錯誤信息,如果在部署模式下面,你可能看到的是一個簡單的提示文字,例如:

錯誤頁面

一旦關閉調試模式,發生錯誤後不會提示具體的錯誤信息,如果你仍然希望看到具體的錯誤信息,那麼可以如下設置:

ThinkPHP/Conf/convention.php裡設置

'SHOW_ERROR_MSG'        =>  true,    // 顯示錯誤信息

如果你試圖在部署模式下訪問一個不存在的模塊或者操作,會發送404錯誤。

調試模式下面一旦系統發生嚴重錯誤會自動拋出異常,也可以用ThinkPHP內置的E方法手動拋出異常。

E('新增失敗');

也可以支持異常代碼(默認為0),例如:

E('信息錄入錯誤',25);

同樣也可以使用throw 關鍵字來拋出異常,下面的寫法是等效的:

throw new \Think\Exception('新增失敗');

我們可以自定義異常頁面的顯示,系統內置的異常模板在系統目錄的Thinkphp/Tpl/think_exception.tpl,可以通過修改系統模板來修改異常頁面的顯示。

也通過設置TMPL_EXCEPTION_FILE配置參數來修改系統默認的異常模板文件, 例如:

ThinkPHP/Conf/convention.php裡設置

'TMPL_EXCEPTION_FILE' => APP_PATH.'/Public/exception.tpl'

異常模板中可以使用的異常變量有:

$e['file']異常文件名
$e['line'] 異常發生的文件行數
$e['message'] 異常信息
$e['trace'] 異常的詳細Trace信息

因為異常模板使用的是原生PHP代碼,所以還可以支持任何的PHP方法和系統變量使用。

拋出異常後通常會顯示具體的錯誤信息,如果不想讓用戶看到具體的錯誤信息,可以設置關閉錯誤信息的顯示並設置統一的錯誤提示信息,例如:

ThinkPHP/Conf/convention.php裡設置

'SHOW_ERROR_MSG' =>    false,
'ERROR_MESSAGE'  =>    '發生錯誤!'

設置之後,所有的異常頁面只會顯示“發生錯誤!”這樣的提示信息,但是日志文件中仍然可以查看具體的錯誤信息。

系統的默認情況下,調試模式是開啟錯誤信息顯示的,部署模式則關閉錯誤信息顯示。

另外一種方式是配置ERROR_PAGE參數,把所有異常和錯誤都指向一個統一頁面,從而避免讓用戶看到異常信息,通常在部署模式下面使用。ERROR_PAGE參數必須是一個完整的URL地址,例如:

ThinkPHP/Conf/convention.php裡設置

'ERROR_PAGE' =>'/Public/error.html'     系統默認為空

如果不在當前域名,還可以指定域名:

'ERROR_PAGE' =>'http://www.myDomain.com/Public/error.html'

注意ERROR_PAGE所指向的頁面不能再使用異常的模板變量了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved