Как написать свой ExceptionHandler?

пишу свое маленькое приложение, использую компененты
"symfony/routing": "^4.3",
    "symfony/http-foundation": "^4.3",
    "symfony/yaml": "^4.3",
    "symfony/dependency-injection": "^4.3",
    "monolog/monolog": "^1.24",
    "sentry/sdk": "2.0",
    "symfony/config": "^4.3",
    "symfony/http-kernel": "^4.3",

у меня имеется точка входа в мое приложение bootsrap/app.php
<?php

use App\App;
use App\Services\Log;

define("BASEPATH", dirname(__DIR__));

\App\Exceptions\Handle::register(true);

$app = App::getInstance(BASEPATH);

Log::init(App::getConfig('logging'));

return $app;

как я понял, с помощью \App\Exceptions\Handle::register(true); я могу отловить все исключения.
Подскажите пожалуйста как я могу написать класс допустим класс Handler который будет наследоваться от ExceptionHandler. Где я смогу обработать все свои исключения.
Я хочу , чтобы все мои исключения обрабатывались в одном месте.
Буду признателен за пример
  • Вопрос задан
  • 7247 просмотров
Пригласить эксперта
Ответы на вопрос 2
iiifx
@iiifx
PHP, OOP, SOLID, Yii2, Composer, PHPStorm
Не скажу вам о этом обработчике, не заглядывал внутрь. Подозреваю, что он только для режима разработки, не уверен.

Но могу подсказать вам где посмотреть как именно реализуется перехват исключений, определение их типа и возврат статус-кодов.
Вот список http-исключений в Симфони, именно они используются для нужных вам целей(помню ваш предыдущий вопрос): https://github.com/symfony/http-kernel/tree/master...
Вот в ядре обработчик основного процесса, это когда выполняется экшн-метод контроллера: https://github.com/symfony/symfony/blob/4.3/src/Sy...
Обратите внимание на try-catch, перехватывают все исключения
И вот тут идет обработчик исключений, который понимает что нужно делать с разными видами исключений, он и обрабатывает необходимые вам http-исключения: https://github.com/symfony/symfony/blob/4.3/src/Sy...

Изучите внимательно, там нет ничего сверхсложного
Ответ написан
Комментировать
@colesnic89
PHP developer
Можно подцепить handler на событие exception
https://symfony.com/doc/current/reference/events.html

В сервисах определяете handler, даёте ему нужный тэг и все.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы