Hyperf 初體驗 異常處理器

2021-10-06 05:12:35 字數 2703 閱讀 1333

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 可能...