Skip to content

Коллектор исключений

Захватывает необработанные исключения с полными стеками вызовов и цепочками исключений (предыдущие исключения).

Панель коллектора исключений

Собираемые данные

ПолеОписание
classИмя класса исключения
messageСообщение исключения
fileФайл, в котором было выброшено исключение
lineНомер строки
codeКод исключения
traceМассив стека вызовов
traceAsStringСтек вызовов в виде форматированной строки

Схема данных

Исключения сериализуются как массив (цепочка от внешнего к внутреннему):

json
[
    {
        "class": "RuntimeException",
        "message": "Something went wrong",
        "file": "/app/src/Service.php",
        "line": 42,
        "code": 0,
        "trace": [...],
        "traceAsString": "#0 /app/src/Controller.php(15): ..."
    },
    {
        "class": "InvalidArgumentException",
        "message": "Original cause",
        "file": "/app/src/Validator.php",
        "line": 88,
        "code": 0,
        "trace": [...],
        "traceAsString": "..."
    }
]

Сводка (отображается в списке отладочных записей):

json
{
    "exception": {
        "class": "RuntimeException",
        "message": "Something went wrong",
        "file": "/app/src/Service.php",
        "line": 42,
        "code": 0
    }
}

Контракт

php
use AppDevPanel\Kernel\Collector\ExceptionCollector;

$collector->collect(throwable: $exception);

Как это работает

Адаптеры фреймворков подключаются к конвейеру обработки ошибок для захвата необработанных исключений. Коллектор обходит цепочку исключений через getPrevious() и сериализует каждое исключение в цепочке.

Панель отладки

  • Заголовок исключения — имя класса, сообщение и место выброса
  • Цепочка исключений — предыдущие исключения отображаются в сворачиваемой цепочке
  • Подсветка синтаксиса исходного кода — показывает файл вокруг строки выброса
  • Полный стек вызовов — раскрываемый с ссылками на файлы для интеграции с IDE

Выпущено под лицензией MIT.