首頁 > php教程 > php手册 > Thinkphp怎麼實作異常錯誤處理?

Thinkphp怎麼實作異常錯誤處理?

WBOY
發布: 2016-11-30 23:59:38
原創
1747 人瀏覽過

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

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

Thinkphp怎麼實作異常錯誤處理?

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

Thinkphp怎麼實作異常錯誤處理?

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

ThinkPHP/Conf/convention.php裡設定

<code class="hljs php"><span class="hljs-string">'SHOW_ERROR_MSG'        =>  <span class="hljs-keyword">true,    <span class="hljs-comment">// 显示错误信息</span></span></span></code>
登入後複製

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

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

<code class="hljs bash">E(<span class="hljs-string">'新增失败');</span></code>
登入後複製

也可以支援異常代碼(預設為0),例如:

<code class="hljs bash">E(<span class="hljs-string">'信息录入错误',<span class="hljs-number">25);</span></span></code>
登入後複製

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

<code class="hljs php"><span class="hljs-keyword">throw <span class="hljs-keyword">new \Think\<span class="hljs-keyword">Exception(<span class="hljs-string">'新增失败');</span></span></span></span></code>
登入後複製

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

也透過設定TMPL_EXCEPTION_FILE設定參數來修改系統預設的異常模板文件, 例如:

ThinkPHP/Conf/convention.php裡設定

<code class="hljs php"><span class="hljs-string">'TMPL_EXCEPTION_FILE' => APP_PATH.<span class="hljs-string">'/Public/exception.tpl'</span></span></code>
登入後複製

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

<code class="hljs bash"><span class="hljs-variable">$e[<span class="hljs-string">'file']异常文件名
<span class="hljs-variable">$e[<span class="hljs-string">'line'] 异常发生的文件行数
<span class="hljs-variable">$e[<span class="hljs-string">'message'] 异常信息
<span class="hljs-variable">$e[<span class="hljs-string">'trace'] 异常的详细Trace信息</span></span></span></span></span></span></span></span></code>
登入後複製

因為異常模板使用的是原生PHP程式碼,所以也可以支援任何的PHP方法和系統變數使用。

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

ThinkPHP/Conf/convention.php裡設定

<code class="hljs php"><span class="hljs-string">'SHOW_ERROR_MSG' =>    <span class="hljs-keyword">false,
<span class="hljs-string">'ERROR_MESSAGE'  =>    <span class="hljs-string">'发生错误!'</span></span></span></span></code>
登入後複製

設定之後,所有的異常頁面只會顯示「發生錯誤!」這樣的提示訊息,但是日誌檔案中仍然可以查看特定的錯誤訊息。

系統的預設情況下,偵錯模式是開啟錯誤訊息顯示的,部署模式則關閉錯誤訊息顯示。

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

ThinkPHP/Conf/convention.php裡設定

<code class="hljs php"><span class="hljs-string">'ERROR_PAGE' =><span class="hljs-string">'/Public/error.html'     系统默认为空</span></span></code>
登入後複製

如果不在目前域名,也可以指定域名:

<code class="hljs scala"><span class="hljs-symbol">'ERROR_PAGE' =><span class="hljs-symbol">'http:<span class="hljs-comment">//www.myDomain.com/Public/error.html'</span></span></span></code>
登入後複製

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板