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

<Meta title='@dxtmisha/vi/functional-basic/Classes/ErrorCenterHandler - Quản lý trình xử lý'/>

# Lớp ErrorCenterHandler

`ErrorCenterHandler` là trình quản lý để quản lý các hàm callback (trình xử lý). Nó cho phép bạn liên kết logic với các nhóm lỗi cụ thể và thực thi nó khi có sự kiện tương ứng xảy ra.

## Các tính năng chính

- **Đăng ký trình xử lý** — thêm thuận tiện các hàm callback vào các nhóm cụ thể.
- **Trình xử lý toàn cục** — hỗ trợ nhóm `undefined`, nhóm này bắt bất kỳ lỗi nào không có trình xử lý cụ thể.
- **Thực thi tuần tự** — kích hoạt tất cả các hàm đã đăng ký theo thứ tự chúng được thêm vào.
- **Ghi log tích hợp** — tự động xuất chi tiết lỗi ra console.

## Khởi tạo

Để tạo một thực thể, sử dụng constructor `ErrorCenterHandler(handlers)`.

**Tham số:**
- `handlers?: ErrorCenterHandlerList` — danh sách trình xử lý ban đầu.

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

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

## Các phương thức

### Hành động
- `on(cause: ErrorCenterCauseItem): this` — Kích hoạt chuỗi trình xử lý. Luôn xuất lỗi ra console qua `console.error`.

### Xác minh
- `has(group: ErrorCenterGroup): boolean` — Kiểm tra xem có trình xử lý cho một nhóm không.
- `get(group: ErrorCenterGroup): ErrorCenterHandlerItem | undefined` — Trả về danh sách các hàm cho một nhóm.

### Cấu hình
- `add(group: ErrorCenterGroup, handler: ErrorCenterHandlerCallback): this` — Thêm một hàm vào một nhóm.
- `addList(handlers: ErrorCenterHandlerList): this` — Đăng ký hàng loạt các trình xử lý.

## Các kiểu dữ liệu

#### `ErrorCenterGroup`
Tên nhóm (`string`) hoặc `undefined` để chặn toàn cục.

#### `ErrorCenterHandlerCallback`
Hàm callback: `(cause: ErrorCenterCauseItem) => void`.

#### `ErrorCenterHandlerItem`
Liên kết giữa một nhóm và một mảng các hàm của nó.
- `group?: ErrorCenterGroup` — nhóm mục tiêu.
- `handlers: ErrorCenterHandlerCallback[]` — danh sách các hàm.

## Ví dụ

### Trình quản lý cô lập cho một mô-đun
```typescript
const uploadHandlers = new ErrorCenterHandler();

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

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