Toolverse
All skills

m06-error-handling

by actionbook

CRITICAL: Use for error handling. Triggers: Result, Option, Error, ?, unwrap, expect, panic, anyhow, thiserror, when to panic vs return Result, custom error, error propagation, 错误处理, Result 用法, 什么时候用 panic

Installation

Pick a client and clone the repository into its skills directory.

Installation

Quick info

Category
Backend
Views
1

About this skill

CRITICAL: Use for error handling. Triggers: Result, Option, Error, ?, unwrap, expect, panic, anyhow, thiserror, when to panic vs return Result, custom error, error propagation, 错误处理, Result 用法, 什么时候用 panic

How to use

  1. Zainstaluj skill m06-error-handling w swoim środowisku pracy z Rust (np. jako część actionbook skills lub jako referencję w dokumentacji projektu).

  2. Kiedy napotkasz kod z unwrap, expect, panic lub znakiem zapytania (?), zatrzymaj się i zadaj sobie pytanie: czy ten błąd jest oczekiwany w normalnej operacji, czy to oznacza bug? Jeśli błąd jest możliwy w normalnym działaniu, powinien być obsługiwany jako Result<T, E> lub Option.

  3. Określ, kto powinien obsłużyć błąd — czy to funkcja bieżąca (match/if-let), czy jej wywołujący (propagacja za pomocą ?), czy użytkownik (przyjazny komunikat), czy programista (panic z opisem). To określi, czy zwrócisz Result, Option, czy panikujesz.

  4. Jeśli zwracasz Result, zaprojektuj typy błędów używając thiserror do jasnego zdefiniowania wariantów błędów, lub użyj anyhow do dodania kontekstu do istniejących błędów. Unikaj zbyt wielu wariantów błędów — jeśli masz ich za dużo, pytanie brzmi: czy model danych jest prawidłowy?

  5. Sprawdź, czy błąd ma wystarczający kontekst dla wywołującego — czy wie, jaki typ błędu się pojawił, gdzie w łańcuchu wywołań i jakie informacje debugowania są dostępne. Użyj .context() z anyhow, aby dodać wyjaśnienia.

  6. Jeśli nie jesteś pewny strategii, przejrzyj m09-domain i m13-domain-error, aby zrozumieć, czy model domeny i wymagania odzyskiwania błędów wpływają na Twoją decyzję.

Related skills

architecture-decision-records

by wshobson

Write and maintain Architecture Decision Records (ADRs) following best practices for technical decision documentation. Use when documenting significant technical decisions, reviewing past architectural choices, or establishing decision processes.

Backend
29130

fastapi-pro

by sickn33

Build high-performance async APIs with FastAPI, SQLAlchemy 2.0, and Pydantic V2. Master microservices, WebSockets, and modern Python async patterns. Use PROACTIVELY for FastAPI development, async optimization, or API architecture.

Backend
54128

postgresql-psql

by timelessco

Comprehensive guide for PostgreSQL psql - the interactive terminal client for PostgreSQL. Use when connecting to PostgreSQL databases, executing queries, managing databases/tables, configuring connection options, formatting output, writing scripts, managing transactions, and

Backend
34173

humanizer

by davila7

Remove signs of AI-generated writing from text. Use when editing or reviewing\ntext to make it sound more natural and human-written. Based on Wikipedia's\ncomprehensive \

Backend
2873

patent-search

by RobThePCGuy

Advanced prior art search using the PatentsView API. Use this skill when users need to search for patents, perform prior art searches, analyze patent landscapes, or find patents by inventor, title, date range, or technical fields. Helps with patent research, freedom to operate

Backend
36218

drizzle

by lobehub

Drizzle ORM schema and database guide. Use when working with database schemas (src/database/schemas/*), defining tables, creating migrations, or database model code. Triggers on Drizzle schema definition, database migrations, or ORM usage questions.

Backend
79340