目錄
- 異常處理
- 未知錯(cuò)誤
- 已知錯(cuò)誤
- 開(kāi)發(fā)環(huán)境
本文實(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);
}
}
開(kāi)發(fā)環(huán)境
在開(kāi)發(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ì)有所幫助。
您可能感興趣的文章:- 詳解Docker 下開(kāi)發(fā) hyperf 完整使用示例
- PhpStorm 如何優(yōu)雅的調(diào)試Hyperf的方法步驟
- php框架知識(shí)點(diǎn)的整理和補(bǔ)充
- php中Workerman框架實(shí)例講解
- 淺談php常用的7大框架的優(yōu)缺點(diǎn)
- php框架CI(codeigniter)自動(dòng)加載與自主創(chuàng)建對(duì)象操作實(shí)例分析
- ThinkPHP5框架中使用JWT的方法示例
- Thinkphp5框架中引入Markdown編輯器操作示例
- 淺談減少Hyperf框架的掃描時(shí)間