Skip to content
Back to skills

Error Handling

ASecurity

Грамотное покрытие кода обработкой ошибок (try/catch/finally) и структурным логированием без «тихих» падений. Границы try/catch, нормализация (typed errors, cause, unknown в catch), async/finally/ретраи/таймауты; логи — уровни, контекст, лог один раз, без секретов/PII. Use при добавлении/ревью error handling и логирования.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 11, 2026
developmentreactnodeapi

Works with

  • api

Security analysis

A100/100

Scanned September 11, 2026

npx -y skills add Vitammiin/agent-vorcl-flow --skill error-handling --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Error Handling?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Error Handling
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vitammiin-error-handling/badge)](https://www.skillsdirectory.com/skills/vitammiin-error-handling)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: error-handling
description: Грамотное покрытие кода обработкой ошибок (try/catch/finally) и структурным логированием без «тихих» падений. Границы try/catch, нормализация (typed errors, cause, unknown в catch), async/finally/ретраи/таймауты; логи — уровни, контекст, лог один раз, без секретов/PII. Use при добавлении/ревью error handling и логирования.
---

# Навык: Error Handling & Logging

Надёжный код без «тихих» падений и с грамотной расстановкой логов.

## try/catch — на границах
Ставь на границах, где ошибка ожидаема (I/O, внешние API, `JSON.parse`/zod, транзакции, cleanup). Не оборачивай всё; программные баги — до глобального обработчика. Не дублируй обработку между слоями.

## Без «тихих» падений
Пустой `catch {}` запрещён — в catch: обработать + лог, пробросить (`throw new AppError(msg, { cause })`), либо преобразовать в доменную ошибку. В прикладном коде бросай только `Error`/наследники (фреймворковый throw для control-flow — Next `redirect()`/`notFound()` — не трогай и не проглатывай без re-throw). `cause` — **ссылка** на исходную ошибку (логгер должен разворачивать цепочку; `console.log` без `util.inspect` — нет). В TS `catch (e: unknown)` — сузь тип.

## Нормализация
Доменные классы (`code`/`httpStatus`/`context`), operational (4xx) vs programmer (5xx). Наружу — единый error-handler (Fastify `setErrorHandler`, Next `error.tsx`) с безопасным телом; валидация входа (zod) → 400. **i18n:** наружу — стабильный машинный `code` (+ параметры), человекочитаемый текст локализуй на границе по локали запроса; логи не локализуй (`$i18n`).

## Async / ресурсы / ретраи
`await` в try; cleanup в `finally`; `Promise.allSettled` где важны все результаты; process-хендлеры `unhandledRejection`/`uncaughtException` → лог + **graceful shutdown и `exit 1`** (не продолжать работу). Внешние вызовы — таймаут (`AbortSignal.timeout`); ретрай только на **транзиентных** ошибках (сеть/таймаут/`5xx`/`429`) с бэкоффом + jitter, мутации — лишь при идемпотентности по эффекту (idempotency key).

## Логи грамотно
Структурные (pino/JSON), уровни `error`/`warn`/`info`/`debug`. **Лог один раз** — на границе обработки (пробрасываешь — не логируй). Поля: операция, ключевые id, `requestId`, ошибка целиком (`stack`+`cause`). Никогда — секреты/PII/токены; на горячих путях сэмплируй. Логи не для управления потоком.

## Фронт / бэк
React — error boundary ловит только ошибки рендера/жизненного цикла (НЕ event handlers/async/SSR); ошибки хендлеров/данных — `try/catch` + состояние `error` у react-query + `onunhandledrejection` (не пустой экран/стек пользователю). Next App Router — `error.tsx` (сегмент) + `global-error.tsx` (корневой layout). Node — `setErrorHandler`, graceful shutdown.

## Анти-паттерны
`catch {}` / `catch { console.log }` без проброса; `catch → null`; `throw 'строка'`; потеря `cause`; двойное логирование; лог секретов; `try` вокруг небросающего кода; необработанные промис-реджекты.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…