大部分情況我們寫程式返回給後端都是直接在需要返回的節點寫個return即可,不管是前端請求需要的結果還是意料之外的結果都是如此,有時候我們可以使用丟擲異常的方式告知前端獲取的結果與其意願不符。
大部分框架也都是有全域性異常處理機制,下面就以thinkphp5來實踐。
1新建自定義異常基類
namespace
;use
think\exception
;/**
* class baseexception
* 自定義異常類的基類
*/class
baseexception
extends
exceptionif(
array_key_exists
('code'
,$params))
if(array_key_exists
('msg'
,$params))
if(array_key_exists
('errorcode'
,$params))
}}
2新建異常處理類namespace
;use
think\exception\handle
;use
think\log
;use
think\request
;use
exception;/*
* 重寫handle的render方法,實現自定義異常訊息
*/class
exceptionhandler
extends
handle
else
$this
->
code
=500
;$this
->
msg=$e-
>
getmessage()
;$this
->
errorcode
=999
;$this
->
recorderrorlog($e
);}$request
= request:
:instance()
;$result=[
'msg'
=>
$this
->
msg,
'error_code'
=>
$this
->
errorcode
,'request_url'
=>
$request
=$request
->
url()]
;return
json
($result
,$this
->
code);
}/** 將異常寫入日誌
*/private
function
recorderrorlog
(exception $e
)}
3 使用自定義異常處理接替框架異常處理'exception_handle'
=>
,
4 使用
定義乙個登陸異常類
namespace
;class
loginexception
extends
baseexception
程式中使用
public
static
function
loginbyname
($username
,$password
)elseif
(!self:
:checkpassword
($user
,$password))
else
}
tp5自定義異常處理
1.傳統模式自定義異常處理 定義model層分母為0的異常資訊 url api model index.php use think exception class index catch exception ex return true 定義controller層index資訊 use think ...
TP5自定義全域性異常處理提示render不相容
填坑 tp5自定義全域性異常處理提示render不相容 thinkphp5.1php框架 更新於 2月27日 約 2 分鐘 tp5自定義全域性異常處理,所有丟擲的異常都通過自定義render方法渲染,再返回客戶端顯示。需要自定義handle的render方法並覆蓋 use think excepti...
tp5自定義命令
建立自定義命令列 1.首先是註冊cammand return 2.建立類,繼承cammand usethink console command class chat extends command protected function execute input input,output outpu...