Thinkphp5框架異常處理操作實(shí)例分析
本文實(shí)例講述了Thinkphp5框架異常處理操作。分享給大家供大家參考,具體如下:
異常處理
有時(shí)候服務(wù)端會(huì)報(bào)出我們無(wú)法感知的錯(cuò)誤,TP5默認(rèn)會(huì)自動(dòng)渲染錯(cuò)誤的形式,生產(chǎn)環(huán)境中這樣的形式并不是我們想要的。
未知錯(cuò)誤
1.exception\Handle.php下的render方法需要覆蓋
創(chuàng)建ApiHandleException.php
<?php namespace app\common\lib\exception; use think\exception\Handle; class ApiHandleException extends Handle { /** * http 狀態(tài)碼 * @var int */ public $httpCode = 500; public function render(\Exception $e) { return show(0, $e->getMessage(), [], $this->httpCode); } }
2.修改config.php的exception_handle配置項(xiàng)
已知錯(cuò)誤
我們?cè)谂袛嘁粋€(gè)數(shù)據(jù)是否合法的時(shí)候,若不合法則拋出異常。
例如:
if($data['msg'] != 1){ throw Exception('數(shù)據(jù)異常'); }
使用內(nèi)置的異常http狀態(tài)碼始終為500
1.創(chuàng)建ApiException.php
<?php namespace app\common\lib\exception; use think\Exception; class ApiException extends Exception { public $message = ''; public $httpCode = 500; public $code = 0; /** * @param string $message * @param int $httpCode * @param int $code */ public function __construct($message = '', $httpCode = 0, $code = 0) { $this->httpCode = $httpCode; $this->message = $message; $this->code = $code; } }
2.對(duì)ApiHandleException.php改寫
<?php namespace app\common\lib\exception; use think\exception\Handle; class ApiHandleException extends Handle { /** * http 狀態(tài)碼 * @var int */ public $httpCode = 500; public function render(\Exception $e) { if ($e instanceof ApiException) { $this->httpCode = $e->httpCode; } return show(0, $e->getMessage(), [], $this->httpCode); } }
開發(fā)環(huán)境
在開發(fā)環(huán)境的時(shí)候依舊使用異常渲染的模式
在ApiHandleException.php中添加代碼
if(config('app_debug') == true) { return parent::render($e); }
更多關(guān)于thinkPHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門教程》、《CI(CodeIgniter)框架進(jìn)階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術(shù)總結(jié)》。
希望本文所述對(duì)大家基于ThinkPHP框架的PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
Laravel框架實(shí)現(xiàn)簡(jiǎn)單的學(xué)生信息管理平臺(tái)案例【附源碼下載】
這篇文章主要介紹了Laravel框架實(shí)現(xiàn)簡(jiǎn)單的學(xué)生信息管理平臺(tái),結(jié)合具體案例形式較為詳細(xì)的分析了基于Laravel框架的學(xué)生信息管理平臺(tái)路由與控制器相關(guān)操作技巧,并附帶完整源碼供讀者下載參考,需要的朋友可以參考下2019-05-05Laravel 實(shí)現(xiàn)數(shù)據(jù)軟刪除功能
這篇文章主要介紹了Laravel 實(shí)現(xiàn)數(shù)據(jù)軟刪除功能,文中給大家提到了軟刪除功能的實(shí)現(xiàn)方法,需要的朋友可以參考下2019-08-08PHP使用array_multisort對(duì)多個(gè)數(shù)組或多維數(shù)組進(jìn)行排序
這篇文章主要介紹了PHP使用array_multisort對(duì)多個(gè)數(shù)組或多維數(shù)組進(jìn)行排序,需要的朋友可以參考下2014-12-12laravel添加前臺(tái)跳轉(zhuǎn)成功頁(yè)面示例
今天小編就為大家分享一篇laravel添加前臺(tái)跳轉(zhuǎn)成功頁(yè)面示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10用PHP寫的一個(gè)冒泡排序法的函數(shù)簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇用PHP寫的一個(gè)冒泡排序法的函數(shù)簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05