1. 程式人生 > 程式設計 >thinkphp5.1 中使用自定義異常處理類進行接管

thinkphp5.1 中使用自定義異常處理類進行接管

配置檔案修改

config/app.
自定義異常接管類出處
'exception_handle' => ‘\app\common\exception\ExceptionHandle',

自定義處理異常方法
寡人的存放目錄為 app/common/exception

ApiException.php

namespace app\common\exception;
use Exception;
class ApiException extends Exception
{	
	/**
	 * 建構函式
	 */
	public function __construchttp://www.cppcns.com
t(array $ApiErrConst,Throwable $previous = null) { $code = $ApiErrConst[0]; $message = $ApiErrConst[1]; parent::__construct($message,$code,$previous); } }

ExceptionHandle.php

namespace app\common\exception;
use Exception;
use think\exception\Handle;
use app\common\exception\ApiException;
use app\common\err\ApiErrCode;
class ExceptionHandle extends Handle
{
	// 引入複用模組:ON返回格式
	use \app\common\traits\Resphttp://www.cppcns.com
onseJson; public function render(Exception $e) { if($e instanceof ApiException) { $code = $e->getCode(); $message = $e->getMessage(); }else{ $code = $e->getCode(); if(!$code || $code < 0) { $code = ApiErrCode::ERROR_UNKNOW[0]; } $message = $e->getMessage() ? $e->getMessage() : ApiErrCode::ERROR_UNKNOW[1]; } echo $this->jsonErrorData($code,$message); //該方法在下方 // 其他錯誤交
給系統處理 // return parent::render($e); } }

錯誤碼檔案

存放目錄:app/common/err

namespace app\common\err;
class ApiErrCode 
{
	/** 
	 * API通用錯誤碼 const 定義常量
	 * error_code < 1000
	 */	
    const ERROR_UNKNOW = [0,"未知錯誤"];
    const ERROR_URL = [1,"介面不存在"];
    .......
}

複用模組

針對API介面返回格式
存放目錄:app/common/traits

namespace app\common\traits;
trait ResponseJson
{
	/**
	 * API接口出現業務異常時時返回
	 * @author Leo 
	 */
	public function jsonErrorData($code,$message,$data = [])
	{
		return $this->jsonResponse($code,$data);
	}

	/**
	 * API介面請求成功時返回
	 * @author Leo 
	 */
	public function jsonSuccessData($data = [])
	{
		return $this->jsonResponse(200,"Sucess",$data);
	}

	/**
	 * 返回一個JSON
	 * @author Leo 
	 */
	private function jsonResponse($code,$data) 
	{
		$content = [
			'code' => $code,'msg' => $message,'data' => $data
		];
		return json_encode($content);
	}
}

頁面呼叫

// 檔案頭部引入
use app\common\exception\ApiException;
use app\common\err\ApiErrCode;
// 引入複用模組:JSON返回格式
use \app\common\traits\ResponseJson;

// 示例
public function index() {
	throw new ApiException(ApiErrCode::ERROR_URL);		// 自定義異常丟擲
}

到此這篇關於thinkphp5.1 中使用自定義異常處理類進行接管的文章就介紹到這了,更多相關thinkphp5.1 自定義異常處理類內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!