例外処理に Hyperf フレームワークを使用する方法
例外処理は、Hyperf フレームワークを使用して開発する場合に非常に重要な部分です。例外処理を適切に行うと、アプリケーションの安定性と信頼性が向上します。この記事では、例外をキャッチする方法、カスタム例外を定義する方法、グローバル例外を処理する方法など、Hyperf フレームワークで例外を処理する方法を紹介します。
Hyperf フレームワークでは、PHP の try-catch ステートメントを使用して例外をキャッチできます。簡単なサンプル コードを次に示します。
use HyperfHttpServerExceptionHttpException; use HyperfHttpServerExceptionRequestExceptionHandlerInterface; class CustomExceptionHandler implements RequestExceptionHandlerInterface { public function handle(Throwable $throwable, ResponseInterface $response) { $statusCode = 500; $message = 'Internal Server Error'; if ($throwable instanceof HttpException) { $statusCode = $throwable->getStatusCode(); $message = $throwable->getMessage(); } // 组装响应数据 $data = [ 'code' => $statusCode, 'message' => $message, ]; // 返回JSON格式的响应 return $response->json($data, $statusCode); } public function isValid(Throwable $throwable): bool { return true; } }
上記のコードでは、RequestExceptionHandlerInterface
インターフェイスを実装することにより、独自の例外ハンドラーを定義します。 handle
メソッドは例外を処理して応答を生成するために使用され、isValid
メソッドは現在の例外ハンドラーによって処理されるべきかどうかを決定するために使用されます。
次に、構成ファイル config/autoload/Exceptions.php
で次のように構成します。
return [ // ... 'handler' => [ 'http' => [ CustomExceptionHandler::class, ], ], ];
このようにして、例外が発生したときにそれをキャプチャできます。そして加工しました。
システムによってスローされた例外をキャッチするだけでなく、例外をカスタマイズしてコード内で積極的にスローすることもできます。カスタム例外は、例外情報をより適切に整理し、必要に応じて対応する例外ハンドラーにスローするのに役立ちます。以下は、カスタム例外のサンプル コードです。
use HyperfServerExceptionServerException; class CustomException extends ServerException { public function __construct(string $message = 'Custom Exception', int $code = -1) { parent::__construct($message, $code); } }
上記のコードでは、ServerException
クラスを継承し、コンストラクターを通じて例外情報を渡します。
カスタム例外の使用も非常に簡単で、システム例外と同じようにキャッチしてスローするだけです。
try { // some code... } catch (CustomException $e) { // handle custom exception... } catch (Throwable $e) { // handle other exceptions... }
例外を処理するために別個の例外ハンドラーを使用することに加えて、Hyperf フレームワークは、アプリケーションの例外ハンドラー すべての例外は均一に処理されます。以下は、グローバル例外ハンドラーのサンプル コードです。
use HyperfUtilsApplicationContext; use HyperfExceptionHandlerExceptionHandler; use PsrHttpMessageResponseInterface; use Throwable; class GlobalExceptionHandler extends ExceptionHandler { public function handle(Throwable $throwable, ResponseInterface $response) { // handle exception... return $response; } public function isValid(Throwable $throwable): bool { return true; } }
上記のコードでは、ExceptionHandler
クラスを継承し、handle
と isValid# を実装します。 ##方法。
handle メソッドは例外を処理して応答を生成するために使用され、
isValid メソッドは現在の例外ハンドラーによって処理されるべきかどうかを決定するために使用されます。
config/autoload/Exceptions.php で次のように構成します。
return [ // ... 'handler' => [ 'http' => [ GlobalExceptionHandler::class, ], ], ];
以上が例外処理に Hyperf フレームワークを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。