tounaf / exception-handler
为 symfony 项目提供异常处理
v1.4.0
2024-06-19 13:42 UTC
Requires
- symfony/error-handler: ^7.1 || 6.4.* || 5.4.* || 4.4.*
- symfony/http-foundation: 6.4.* || 6.3.* || 6.2.* || 6.1.* || 5.4.* || 4.4.*
Requires (Dev)
- enlightn/security-checker: ^1.11
- friendsofphp/php-cs-fixer: ^3.39
- rector/rector: *
- squizlabs/php_codesniffer: *
- symfony/test-pack: ^1.1
- symfony/var-dumper: ^6.4 || ^6.3 || ^6.2
This package is auto-updated.
Last update: 2024-09-19 14:21:27 UTC
README
为应用中抛出的每个异常创建处理类。
1 - 安装
composer require tounaf/exception-handler
2 - 功能
此包允许通过异常分离处理类,以避免代码耦合:- 一个处理类负责异常处理 - 通过不同的输出(html、json、xml)渲染响应 - 装饰类处理其他需求(写入日志文件、发送异常到邮件、到 sentry)
3 - 创建异常处理类
创建一个类并实现 ExceptionHandlerInteface 接口。它包含两个方法
** handleException:此方法接受 Throwble 作为参数,并返回一个 Symfony 响应
** supportsException:此方法接受 Throwble 作为参数,并返回布尔值。
示例
首先创建通过应用处理的异常。
<?php namespace App\Handler\Exception; class MyException extends \Exception { }
然后创建处理此异常的处理程序
<?php namespace App\Handler\Exception; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\JsonResponse; use Tounaf\Exception\ExceptionHandlerInterface; class MyExceptionHandler implements ExceptionHandlerInterface { // return an JsonResponse public function handleException(\Throwable $throwable): Response { // your logic return new JsonResponse(['message' => $throwable->getMessage(), 'code' => 12]); } // public function supportsException(\Throwable $throwable): Response { return $throwable instanceof MyException; } }
当 MyException 被抛出时,系统会调用 MyExceptionHandler 类。例如
namespace App\Service; use App\Handler\Exception\MyException; class MyService { public function someFunction() { // your logic throw new MyException(); } }