Toolverse
Wszystkie skille

m06-error-handling

autor: actionbook

Naucz się obsługiwać błędy w Rust — od Result i Option po custom error types

Instalacja

Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.

Instalacja

Szybkie info

Kategoria
Backend
Wyświetlenia
1

O skillu

Skill m06-error-handling prowadzi Cię przez strategiczne podejmowanie decyzji o obsłudze błędów w Rust. Zamiast mechanicznie stosować unwrap czy panic, nauczysz się rozróżniać błędy oczekiwane (Result), brak wartości (Option) i rzeczywiste bugi (panic). Dowiesz się, kiedy propagować błędy operatorem ?, jak projektować własne typy błędów za pomocą thiserror, i jak dodawać kontekst do błędów za pomocą anyhow. Skill pokazuje, że każda decyzja o obsłudze błędu to pytanie o design — czy błąd jest normalny, kto go obsługuje i jakie informacje potrzebuje wywołujący.

Jak używać

  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ę.

Podobne skille