import {Meta} from '@storybook/addon-docs/blocks'

<Meta title='@dxtmisha/ru/functional-basic/Classes/ErrorCenterHandler - Управление обработчиками'/>

# Класс ErrorCenterHandler

`ErrorCenterHandler` — это менеджер для управления функциями обратного вызова (обработчиками). Он позволяет привязывать логику к определенным группам ошибок и выполнять её, когда происходит соответствующее событие.

## Ключевые особенности

- **Регистрация обработчиков** — удобное добавление функций обратного вызова к конкретным группам.
- **Глобальный обработчик** — поддержка группы `undefined`, которая перехватывает любую ошибку без специфического обработчика.
- **Последовательное выполнение** — запускает все зарегистрированные функции в порядке их добавления.
- **Интегрированное логирование** — автоматически выводит детали ошибки в консоль.

## Инициализация

Для создания экземпляра используйте конструктор `ErrorCenterHandler(handlers)`.

**Параметры:**
- `handlers?: ErrorCenterHandlerList` — начальный список обработчиков.

```typescript
import { ErrorCenterHandler } from '@dxtmisha/functional-basic'

const handlers = new ErrorCenterHandler([
  {
    group: 'api',
    handlers: [(cause) => console.log('API Error:', cause.code)]
  }
]);
```

## Методы

### Действие
- `on(cause: ErrorCenterCauseItem): this` — Запускает цепочку обработчиков. Всегда выводит ошибку в консоль через `console.error`.

### Проверка
- `has(group: ErrorCenterGroup): boolean` — Проверяет, есть ли обработчики для группы.
- `get(group: ErrorCenterGroup): ErrorCenterHandlerItem | undefined` — Возвращает список функций для группы.

### Конфигурация
- `add(group: ErrorCenterGroup, handler: ErrorCenterHandlerCallback): this` — Добавляет одну функцию в группу.
- `addList(handlers: ErrorCenterHandlerList): this` — Пакетная регистрация обработчиков.

## Типы

#### `ErrorCenterGroup`
Имя группы (`string`) или `undefined` для глобального перехвата.

#### `ErrorCenterHandlerCallback`
Функция обратного вызова: `(cause: ErrorCenterCauseItem) => void`.

#### `ErrorCenterHandlerItem`
Связка группы и массива её функций.
- `group?: ErrorCenterGroup` — целевая группа.
- `handlers: ErrorCenterHandlerCallback[]` — список функций.

## Примеры

### Изолированный менеджер для модуля
```typescript
const uploadHandlers = new ErrorCenterHandler();

uploadHandlers.add('upload', (cause) => {
  if (cause.code === 'retry') {
    restartUpload();
  }
});

uploadHandlers.on({ group: 'upload', code: 'retry' });
```
