在hyperf
裡,業務**都執行在worker程序
上,也就意味著一旦任意乙個請求的業務存在沒有捕獲處理的異常的話,都會導致對應的worker程序
被中斷退出,雖然被中斷的worker程序
仍會被重新拉起,但對服務而言也是不能接受的,且捕獲異常並輸出合理的報錯內容給客戶端也是更加友好的。 我們可以通過對各個server
定義不同的異常處理器(exceptionhandler)
,一旦業務流程存在沒有捕獲的異常,都會被傳遞到已註冊的異常處理器(exceptionhandler)
去處理。
關於,如何自定義異常,如何註冊異常,這裡就不貼上了,詳細的直接看hyperf
文件。 下面,貼合乙個實際例子講解下,如何處理異常。
引入 phper666/jwt-auth
composer require phper666/jwt-auth:~2.0.1
php bin/hyperf.php jwt:publish --config
# 務必改為你自己的字串
jwt_secret=hyperf
#token過期時間,單位為秒
return $this->response->json(['code' => 0, 'msg' => '登入失敗', 'data' => ]);
}# 重新整理token,http頭部必須攜帶token才能訪問的路由
public function refreshtoken()
# 登出token,http頭部必須攜帶token才能訪問的路由
public function logout()
# http頭部必須攜帶token才能訪問的路由
public function getdata()
public function index()
.",];
}}
編輯路由檔案
router::addgroup('/v1', function () , ['middleware' => [phper666\jwtauth\middleware\jwtauthmiddleware::class]]);
請求 登陸,返回 token
正常情況下,token 有效、並且正確傳入:
那麼如果不傳遞 token、或者 token 失效,jwt-auth
這個元件只是丟擲了異常,並在控制台列印出來,,但是使用者並不知情。報出 500 的響應
這樣肯定不行哈,所以異常處理這個東西就派上用場了。
我們看到在vendor/phper666/jwt-auth/src/exception
會有兩個異常類。
接下來我們就自定義一下異常處理
編輯如下**,主要捕獲的就是phper666\jwtauth\exception\tokenvalidexception
類。
// 交給下乙個異常處理器
return $response;
// 或者不做處理直接遮蔽異常
}/**
* 判斷該異常處理器是否要對該異常進行處理
* @param throwable $throwable
* @return bool
*/public function isvalid(throwable $throwable): bool
}編輯配置檔案config/autoload/exceptions.php
];然後在測試一下
ok,這就是關於異常的處理。
常見的CSS預處理器之Sass初體驗
sass 英文全稱 syntactically awesome stylesheets 是乙個最初由hampton catlin設計並由natalie weizenbaum開發的層疊樣式表語言。sass是乙個將指令碼解析成css的指令碼語言,即sassscript,它包括兩套語法。最開始的語法叫 縮...
SpringMVC 異常處理器
1.基於配置的異常處理 在springmvc.xml中配置異常處理器 bean class property name props prop key j a.lang.arithmeticexception error prop props property property name except...
Metis異常檢測初體驗
以下基於 metis v0.3 2.功能以及對應原始碼分析 3.原始碼初看 安裝文件路徑 安裝有兩種方式1 手工安裝部署 2 docker安裝部署 建議使用docker安裝方式,省事,手工安裝和環境依賴很重要,有些坑需要自己踩。python版本 2.7版本。有版本有要求,如果使用python3 可能...