tounaf/exception-handler

为 symfony 项目提供异常处理

安装: 38

依赖: 1

建议者: 0

安全: 0

星标: 0

关注者: 0

分支: 2

公开问题: 0

类型:package

v1.4.0 2024-06-19 13:42 UTC

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();
    }
}