【小(xiǎo)編推薦】ThinkPHP3.2——異常$∏£處理(lǐ)

2014-06-26   |&¶&§nbsp;  發布者:梁國(guó)芳 &nbδ↕ ←sp; | &nbs¶ ← p; 查看(kàn):3320次

Thinkphp

和(hé)PHP默認的(de)異常處理(lǐ)不(b" ‍ ù)同,ThinkPHP抛出的(de)不(bù)是(shì)單純的λ₩(de)錯(cuò)誤信息,而是(shì)一(♣≥yī)個(gè)人(rén)性化(huà)的(de)錯(cuò)"§"誤頁面,如(rú)下(xià)圖所示:

錯(cuò)誤頁面

隻有(yǒu)在調試模式下(xià)面才能(néng)顯示具體 ÷™(tǐ)的(de)錯(cuò)誤信息,如(rú)果在部署模式下(xià)π'面,你(nǐ)可(kě)能(néng)看(kàn)到(dào)的(de)是 φ♠>(shì)一(yī)個(gè)簡單的(de)提 ✔λ示文(wén)字,例如(rú):

錯(cuò)誤頁面

一(yī)旦關閉調試模式,發生(shēng)錯(cuò)誤後不(bù)會¥≈(huì)提示具體(tǐ)的(de)錯(≠¥∏cuò)誤信息,如(rú)果你(nǐ)仍然希望¶↔>看(kàn)到(dào)具體(tǐ)的(de)錯(cuò)誤信息,那(nà)←'≠麽可(kě)以如(rú)下(xià)設置:

  1. 'SHOW_ERROR_MSG' => true, // 顯示錯(cuò)誤信息

如(rú)果你(nǐ)試圖在部署模式下(xià)訪問(≈₽wèn)一(yī)個(gè)不(bù)存在的​​$ε(de)模塊或者操作(zuò),會(huì)發送4♥©¶→04錯(cuò)誤。

調試模式下(xià)面一(yī)旦系統發生(shēng)嚴‌©•★重錯(cuò)誤會(huì)自(zì)動抛出φ™₩異常,也(yě)可(kě)以用(yòng)ThinkPHP內(nèπ αi)置的(de)E方法手動抛出異常。

  1. E('新增失敗');

也(yě)可(kě)以支持異常代碼(默認為(wèi)0), ✘£例如(rú):

  1. E('信息錄入錯(cuò)誤',25);

同樣也(yě)可(kě)以使用(yòng)throw •¥Ω關鍵字來(lái)抛出異常,下(xià)面的(₹✘de)寫法是(shì)等效的(de):

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

我們可(kě)以自(zì)定義異常頁面的(d±∞↑e)顯示,系統內(nèi)置的(de)異常模闆在系統目錄的(£©de)Tpl/think_exception.tpl,可(kě)以通(tōng)過修改系統模闆來(lái)修改異常頁γ §面的(de)顯示。也(yě)通(tōng) ‍過設置TMPL_EXCEPTION_FILE配置參數(shù)來(lái)修改系統默認的(de)異常模闆文(wé≈←>n)件(jiàn), 例如(rú):

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

異常模闆中可(kě)以使用(yòng)的(de)異常變量有(yǒ ∞εu):

  1. $e['file']異常文(wén)件(jiàn)名
  2. $e['line'] 異常發生(shēng)的(de)文(wén)∑ε件(jiàn)行(xíng)數(shù)
  3. $e['message'] 異常信息
  4. $e['trace'] 異常的(de)詳細Trace信息

因為(wèi)異常模闆使用(yòng)的(de)是(shì)原生(shēng$✔)PHP代碼,所以還(hái)可(kě)以←$$₩支持任何的(de)PHP方法和(hé)系統變量使用(yòng)。

抛出異常後通(tōng)常會(huì)顯示具體("©tǐ)的(de)錯(cuò)誤信息,如(✘™'∑rú)果不(bù)想讓用(yòng)戶看(kàn)到(dào)具體(tǐ)↓↑的(de)錯(cuò)誤信息,可(kě)以設置關閉錯(cuò)誤信息的(d∏γσe)顯示并設置統一(yī)的(de)錯(cuò)誤提©≈γ 示信息,例如(rú):

  1. 'SHOW_ERROR_MSG' => false,
  2. 'ERROR_MESSAGE' => '發生(shēng)錯(cuò)誤!'

設置之後,所有(yǒu)的(de)異常頁面隻會(huì)顯示“↔↓✔>發生(shēng)錯(cuò)誤!”這(↕↓•zhè)樣的(de)提示信息,但(dàn↔  ÷)是(shì)日(rì)志(zhì)文(≈"'wén)件(jiàn)中仍然可(kě)以查看$φσ(kàn)具體(tǐ)的(de)錯(cuò)誤信息。

系統的(de)默認情況下(xià),調試模式是(shì)開(kāi)啓錯®®(cuò)誤信息顯示的(de),部署模式則關閉錯(cuò)誤信息顯示。δ★

另外(wài)一(yī)種方式是(shì)配置ERROR_PAGE參數(shù),把所有(yǒu)異常和(hé)錯(cuò)誤都(dō≠γ&×u)指向一(yī)個(gè)統一(yī)頁面,從(c₩≤π✔óng)而避免讓用(yòng)戶看(kàn)到(dào)異常信息✘→♠σ,通(tōng)常在部署模式下(xià)面使用(yòng)。E¥>RROR_PAGE參數(shù)必須是(shì)λ↔≥"一(yī)個(gè)完整的(de)URL地(dì)★€♦址,例如(rú):

  1. 'ERROR_PAGE' =>'/Public/error.html''α​

如(rú)果不(bù)在當前域名,還(hái)可(kě)以指定域$Ω♣名:

  1. 'ERROR_PAGE' =>'http://www.myDomain.c☆$om/Public/error.html'

注意ERROR_PAGE所指向的(de)頁面不(bù)能(n≠π♠€éng)再使用(yòng)異常的(de)模闆變量了(le)。