error-handling-patterns
Реализация надежных шаблонов обработки ошибок
Также доступно от: wshobson
Создавайте более устойчивые приложения, освоив шаблоны обработки ошибок, включая исключения, типы Result, логику повторных попыток и автоматические выключатели для Python, TypeScript, Rust и Go.
Скачать ZIP навыка
Загрузить в Claude
Перейдите в Settings → Capabilities → Skills → Upload skill
Включите и начните использовать
Протестировать
Использование «error-handling-patterns». Как обрабатывать ошибки при вызове внешнего API?
Ожидаемый результат:
Для вызовов внешних API реализуйте несколько уровней обработки ошибок: (1) Пользовательская иерархия исключений для различных типов сбоев, (2) Повторная попытка с экспоненциальной задержкой для временных ошибок, (3) Автоматический выключатель для предотвращения каскадных сбоев, (4) Грациозная деградация с резервными данными. Пример подхода: создайте пользовательские исключения (NetworkError, TimeoutError, RateLimitError), оберните вызовы API в декоратор повторных попыток с 3 попытками и экспоненциальной задержкой, используйте автоматический выключатель для отслеживания частоты сбоев, предоставляйте кэшированное резервирование при недоступности API.
Использование «error-handling-patterns». Когда следует использовать типы Result вместо исключений?
Ожидаемый результат:
Используйте типы Result для ожидаемых сбоев (ошибки валидации, ошибки не найдено, ошибки бизнес-логики), когда вызывающий код должен явно обрабатывать оба случая: успех и неудачу. Используйте исключения для действительно исключительных ситуаций (нулевые указатели, нехватка памяти, неожиданные ошибки времени выполнения). Типы Result делают обработку ошибок явной в системе типов, заставляя вызывающий код учитывать случаи неудачи. В TypeScript: Result<T, E> = { ok: true, value: T } | { ok: false, error: E }. В Rust оператор ? и тип Result<T, E> предоставляют встроенную поддержку. Этот подход улучшает читаемость кода и уменьшает количество неожиданных ошибок времени выполнения.
Аудит безопасности
БезопасноThis skill is a documentation and educational resource about error handling patterns. The static scanner flagged 49 potential issues, but after evaluation all findings are FALSE POSITIVES. The detected patterns (backtick syntax examples, HTTP library examples, error categories) are educational code snippets in markdown documentation, not executable malicious code. No security concerns identified.
Оценка качества
Что вы можете построить
Повышение надежности приложения
Добавьте надежную обработку ошибок в новые или существующие функции с правильными иерархиями исключений и осмысленными сообщениями об ошибках.
Построение отказоустойчивых систем
Реализуйте логику повторных попыток, автоматические выключатели и грациозную деградацию для распределенных систем и микросервисов.
Изучение межъязыковых шаблонов
Поймите подходы к обработке ошибок в Python, TypeScript, Rust и Go, чтобы выбрать лучший подход для каждой ситуации.
Попробуйте эти промпты
Помогите мне реализовать правильную обработку ошибок для функции, которая получает данные пользователя из базы данных. Я хочу создать пользовательские классы исключений и обрабатывать различные сценарии ошибок соответствующим образом.
Покажите мне, как реализовать шаблон типа Result в TypeScript для разбора JSON-данных. Включите правильные типы ошибок и цепочечную обработку ошибок.
Создайте декоратор Python, который реализует логику повторных попыток с экспоненциальной задержкой для сетевых вызовов. Обработайте различные типы исключений и включите настраиваемое количество попыток.
Реализуйте шаблон автоматического выключателя в Python для предотвращения каскадных сбоев при вызове внешнего API. Включите состояния closed, open и half-open.
Лучшие практики
- Быстро завершайте работу при ошибке, проверяя входные данные на раннем этапе и предоставляя осмысленные сообщения об ошибках с контекстом
- Сохраняйте контекст ошибок, включая трассировку стека, временные метки и соответствующие метаданные
- Обрабатывайте ошибки на соответствующем уровне, где вы можете значимо на них реагировать
- Надлежащим образом логируйте ошибки — логируйте неожиданные ошибки, а не ожидаемые сбои валидации
Избегать
- Слишком широкая ловля с обработчиками общих исключений Exception, которые скрывают ошибки
- Пустые блоки catch, которые молча поглощают ошибки без логирования или обработки
- Возврат кодов ошибок вместо использования правильных исключений или типов Result
- Игнорирование асинхронных ошибок из-за неправильной обработки отклонений промисов
Часто задаваемые вопросы
В чем разница между исключениями и типами Result?
Когда следует использовать автоматический выключатель?
Как работает экспоненциальная задержка для повторных попыток?
Что такое грациозная деградация?
Следует ли ловить исключения или позволять им распространяться?
Как создавать осмысленные сообщения об ошибках?
Сведения для разработчиков
Автор
sickn33Лицензия
MIT
Репозиторий
https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/error-handling-patternsСсылка
main
Структура файлов